Explain 表および Explain 情報の編成
Explain インスタンス は 1 つまたは複数の SQL または XQuery ステートメントごとに、1 回の Explain 機能の呼び出しを示します。 1 つの Explain インスタンス内でキャプチャーされる Explain 情報には、 コンパイル環境に関する情報、ならびにコンパイル対象となっている SQL ステートメントまたは XQuery ステートメントを満たすために選ばれるアクセス・プランに関する情報が含まれます。
- 静的照会ステートメントでは、1 つのパッケージに入っているすべての適格な SQL または XQuery ステートメント。 SQL ステートメント (XML データを照会するステートメントを含む) の場合、
CALL、コンパウンド SQL (動的)、DELETE、INSERT、MERGE、REFRESH TABLE、SELECT、SELECT INTO、SET INTEGRITY、UPDATE、VALUES、および VALUES INTO の各ステートメントに関する Explain 情報をキャプチャーできます。 XQuery ステートメントの場合、XQUERY db2-fn:xmlcolumn および XQUERY db2-fn:sqlquery ステートメントに関する Explain 情報を取得することができます。注: REFRESH TABLE および SET INTEGRITY ステートメントは、動的にのみコンパイルされます。
- 増分バインド SQL ステートメントでは、1 つの特定の SQL ステートメント。
- 動的 SQL ステートメントでは、1 つの特定の SQL ステートメント。
- 各 EXPLAIN ステートメント (動的または静的)。
- sqllib サブディレクトリーの misc サブディレクトリーで EXPLAIN.DDL スクリプトを実行します。
- SYSPROC.SYSINSTALLOBJECTS プロシージャーを使用します。 このプロシージャーを使用して、Explain 表のドロップおよび妥当性検査を行うこともできます。
Explain 表は、複数のユーザーに共通にすることができます。 あるユーザー用の表を定義してから、その定義した表を指す別名を各追加ユーザー用に作成できます。 別の方法として、SYSTOOLS スキーマの下に Explain 表を定義することもできます。 ユーザーのセッション ID (動的 SQL ステートメントまたは動的 XQuery ステートメントの場合)、またはステートメントの許可 ID (静的 SQL ステートメントまたは静的 XQuery ステートメントの場合) の下に Explain 表も別名もない場合、 Explain 機能は SYSTOOLS スキーマをデフォルトとして使用します。 共通の Explain 表を共有する各ユーザーは、それらの表に対する INSERT 特権を保持していることが必要です。
次の表に、各 Explain 表の目的を要約します。
表名 | 説明 |
---|---|
ADVISE_INDEX | 推奨索引に関する情報が格納されます。 この表のデータは、照会コンパイラーまたは db2advis コマンドを使用して設定することもできますし、ユーザーが自分で設定することもできます。 この表は、推奨索引の取得および提案された索引の評価を行うために使用されます。 |
ADVISE_INSTANCE | db2advis コマンドの実行に関する情報が入ります。 これには開始時刻に関する情報も含まれます。 この表には、db2advis コマンドの実行ごとに 1 行が入ります。 |
ADVISE_MQT | 以下の情報が格納されます。
|
ADVISE_PARTITION | db2advis コマンドによって生成および評価される仮想データベース・パーティションを保管します。 |
ADVISE_TABLE | MQT、マルチディメンション・クラスタリング表 (MDC)、およびデータベース・パーティションに関する設計アドバイザーの最終的な推奨値を使った、表作成のためのデータ定義言語 (DDL) ステートメントを保管します。 |
ADVISE_WORKLOAD | ワークロード内の SQL ステートメントまたは XQuery ステートメントごとに 1 つの行が入ります。 db2advis コマンドは、この表を使ってワークロード情報を収集し、保管します。 |
EXPLAIN_ACTUALS | Explain セクション actuals 情報を含みます。 |
EXPLAIN_ARGUMENT | 各演算子に固有の特性に関する情報がある場合、それを格納します。 |
EXPLAIN_DIAGNOSTIC | EXPLAIN_STATEMENT 表で EXPLAIN されたステートメントの特定のインスタンスに対して生成された各診断メッセージの項目を含みます。 |
EXPLAIN_DIAGNOSTIC_DATA | EXPLAIN_DIAGNOSTIC 表で記録された診断メッセージのメッセージ・トークンを含みます。 メッセージ・トークンは、メッセージを生成した SQL ステートメントの実行に固有の追加情報を提供します。 |
EXPLAIN_INSTANCE | すべての Explain 情報用の主コントロール表です。 Explain 表の各行は、この表内の固有の行にリンクされます。 Explain 対象の SQL ステートメントまたは XQuery ステートメントのソースに関する基本情報および環境情報が、この表に保持されます。 |
EXPLAIN_OBJECT | SQL または XQuery ステートメントを満たすために生成されるアクセス・プランに必要なデータ・オブジェクトを示します。 |
EXPLAIN_OPERATOR | 照会コンパイラーが SQL または XQuery ステートメントを満たすために必要とするすべての演算子が入っています。 |
EXPLAIN_PREDICATE | 特定の演算子によって適用される述部を識別します。 |
EXPLAIN_STATEMENT | さまざまなレベルの Explain 情報に関して発行された SQL ステートメントまたは XQuery ステートメントのテキストが格納されます。 発行した SQL ステートメントまたは XQuery ステートメントと、オプティマイザーがアクセス・プランを選択するときに使用するバージョンが、この表に格納されます。 Explain スナップショットが要求されると、照会オプティマイザーが選択したアクセス・プランを説明する付加的な Explain 情報が記録されます。 この情報は、EXPLAIN_STATEMENT 表の SNAPSHOT 列に保管されます。 |
EXPLAIN_STREAM | 個々の演算子とデータ・オブジェクトの間の入出力データ・ストリームを表します。 演算子は、EXPLAIN_OPERATOR 表に示されます。 データ・オブジェクトは、EXPLAIN_OBJECT 表に示されています。 |
OBJECT_METRICS | 特定の時刻におけるセクションの特定の実行で参照されるオブジェクトごとの実行時統計を含みます。 複数のメンバーについてのオブジェクト統計を収集する場合、この表にはオブジェクトが参照されたメンバーごとに 1 行が含まれます。 パーティション化されたオブジェクトについてのオブジェクト統計を収集する場合、この表にはデータ・パーティションごとに 1 行が含まれます。 この表に情報が格納されるのは、アクティビティー・イベント・モニターによってセクション actuals がキャプチャーされる場合のみです。 |