Explain 表

Explain 表は、Explain 機能がアクティブ化された時点のアクセス・プランをキャプチャーします。

Explain 表は、Explain 機能を呼び出す前に作成しておく必要があります。 以下のいずれかの方法を使用して作成できます。
  • 以下のように SYSPROC.SYSINSTALLOBJECTS プロシージャーを呼び出します。
    
    CONNECT TO database-name
    CALL SYSPROC.SYSINSTALLOBJECTS('EXPLAIN', 'C', 
            CAST (NULL AS VARCHAR(128)), CAST (NULL AS VARCHAR(128)))
    この呼び出しは、SYSTOOLS スキーマの下で Explain 表を作成します。別のスキーマの下で作成するには、呼び出し内の最後のパラメーターとしてスキーマ名を指定します。
  • EXPLAIN.DDL コマンド・ファイルを実行します。
    CONNECT TO database-name
    db2 -tf EXPLAIN.DDL
    このコマンド・ファイルにより、現行のスキーマの下で Explain 表が作成されます。以下の表に示すとおり、このコマンド・ファイルの場所はオペレーティング・システムによって異なります。
    オペレーティング・システム EXPLAIN コマンド・ファイルの場所
    Linux
    AIX®
    Solaris
    HP-UX
    INSTHOME/sqllib/misc ディレクトリーにあります。 INSTHOME はインスタンスのホーム・ディレクトリーです。
    Windows Windows オペレーティング・システム上の DB2PATH¥misc ディレクトリーにあります。DB2PATH は、データベース・ソフトウェアをインストールした場所です。

    EXPLAIN.DDL ファイルの使用より、さまざまなデータベース構成に自動的に適合できる SYSPROC.SYSINSTALLOBJECTS プロシージャーの呼び出しが優先されます。例えば、BLOCKNONLOGGED パラメーターが yes に設定された場合は、NOT LOGGED 節が LOB 列に使用されるため、EXPLAIN.DDL に含まれる一部のステートメントが失敗します。 ただし、BLOCKNONLOGGED パラメーターが yes に設定されると、SYSPROC.SYSINSTALLOBJECTS プロシージャーによって自動的に NOT LOGGED 節の使用が回避されます。

Explain 機能は、データの取り込み先である Explain 表を修飾するときに、スキーマとして以下の ID を使用します。
  • 動的 SQL のセッション許可 ID
  • 静的 SQL のステートメント許可 ID
  • 許可 ID スキーマが適用された Explain 表が存在しない場合は SYSTOOLS スキーマ
そのスキーマは、一連の Explain 表に関連付けられている場合もあれば、別のスキーマの下で一連の Explain 表を参照する別名に関連付けられている場合もあります。そのスキーマの下で Explain 表が検出されなかった場合、Explain 機能は、SYSTOOLS スキーマの下に Explain 表があるかどうかをチェックし、その表を使用しようとします。

Explain 機能によって Explain 表にデータを追加しても、トリガーが起動したり、 参照制約またはチェック制約が起動したりすることはありません。 例えば、EXPLAIN_INSTANCE 表に対する挿入トリガーを定義して、 該当するステートメントが Explain されても、そのトリガーは起動しません。

パーティション・データベース・システムにおいて Explain 機能のパフォーマンスを改善するには、 単一のデータベース・パーティション・グループ内に Explain 表を、 できれば照会のコンパイル時に接続する予定のものと同じデータベース・パーティション上で作成することをお勧めします。