DSN_STATEMENT_CACHE_TABLE

ステートメント・キャッシュ表 DSN_STATEMENT_CACHE_TABLE には、ステートメント・キャッシュ内の SQL ステートメントに関する情報、EXPLAIN STATEMENT CACHE ALL ステートメントの結果としてキャプチャーされる情報が入っています。

プログラム固有のプログラミングインターフェース情報の開始。
推奨: システムで管理されているEXPLAINテーブルにデータを手動で挿入しないこと、および、不要となったEXPLAINテーブルのデータを削除する際には注意すること。 このデータは、 Db2 のEXPLAIN関数および最適化ツールのみで操作されることを意図しています。 一部の最適化ツールは、さまざまな EXPLAIN 表のインスタンスに依存しています。 そのようなツール用に作成されているデータや EXPLAIN 表のインスタンスを削除または除去しないように注意してください。

修飾子

サブシステムまたはデータ共用グループには、ユーザー ID によって修飾されるこれらの表の複数インスタンスを含めることができます。 これらの表には、EXPLAIN ステートメントまたはバインドを発行する場合に、ステートメントのコスト情報が追加されます。 これらの表には、BIND コマンドまたは REBIND コマンドで EXPLAIN(YES) か EXPLAIN(ONLY) を指定した場合にも情報が追加されます。 SQL 最適化ツールも、ユーザー ID で修飾された EXPLAIN 表を作成する場合があります。 この表のインスタンスを作成するための SQL ステートメントは、SDSNSAMP ライブラリーのメンバー DSNTESC にあります。

サンプルの CREATE TABLE ステートメント

各 EXPLAIN テーブルのサンプル CREATE TABLE ステートメントはプレフィックス. SDSNSAMP ライブラリのメンバー DSNTESC にあります。 EXPLAINテーブルを現在の Db2 の形式にアップグレードするには、ADMIN_EXPLAIN_MAINTストアド・プロシージャを呼び出します。 ADMIN_EXPLAIN_MAINTは、EXPLAINテーブルを作成したり、現在の Db2 リリース用のフォーマットにアップグレードしたり、その他の保守作業を行うこともできます。 アクション入力パラメータを使用してこれらの各タスクを要求する方法については、 ADMIN_EXPLAIN_MAINTストアド・プロシージャを参照してください。 また、EXPLAINテーブルを現在の Db2 の形式にアップグレードするタスクのみを実行する場合は、ジョブDSNTIJXAを実行することもできます。 DSNTIJXA は REXX exec DSNTXTA を呼び出してアップグレードを実行する。 DSNTIJXA の実行の詳細については、 移行ステップ 21: EXPLAIN テーブルを現在のフォーマットに変換するを参照してください。

列の説明

次の表は、DSN_STATEMENT_CACHE_TABLE 内の列の説明を示しています。

表 1. DSN_STATEMENT_CACHE_TABLE の列の説明
列名 データ型 説明
STMT_ID INTEGER NOT NULL ステートメント ID。この値はそのステートメント 用の EDM 固有トークンです。
STMT_TOKEN VARCHAR(240) ステートメント・トークン。この値を識別ストリン グとして指定します。
COLLID VARCHAR(128) NOT NULL コレクションID:
'DSNEXPLAINMODEYES'
行は CURRENT EXPLAIN MODE 特殊レジスターの値に YES を指定するアプリケーションから発生する。
'DSNEXPLAINMODEEXPLAIN'
行は CURRENT EXPLAIN MODE 特殊レジスターの値に EXPLAIN を指定するアプリケーションから発生する。
PROGRAM_NAME VARCHAR(128) NOT NULL このステートメントに対する初期 PREPARE を実行したパッケージの名前。
INV_DROPALT CHAR(1) NOT NULL この列は使用されません。
INV_REVOKE CHAR(1) NOT NULL この列は使用されません。
INV_LRU CHAR(1) NOT NULL この列は使用されません。
INV_RUNSTATS CHAR(1) NOT NULL この列は使用されません。
CACHED_TS TIMESTAMP NOT NULL 動的ステートメントキャッシュにステートメントが保存された際のタイムスタンプ。 3
USERS INTEGER NOT NULL このステートメントの現行ユーザー数。 この数値は、現行作業単位時にステートメントを準備または実行したユーザーを示します。 1, 3
COPIES INTEGER NOT NULL システム内のすべてのスレッドによって所有される、ステートメントのコピーの数 1, 3
LINES INTEGER NOT NULL ステートメントの初期 PREPARE からのプリコンパイラー行番号 1
PRIMAUTH VARCHAR(128) NOT NULL このステートメントの初期 PREPARE を行った 1 次許可 ID。
CURSQLID VARCHAR(128) NOT NULL このステートメントの初期 PREPARE を行った CURRENT SQLID。
BIND_QUALIFIER VARCHAR(128) NOT NULL BIND 修飾子。 非修飾表名の場合、これが対象の修 飾子となります。
BIND_ISO CHAR(2) NOT NULL このステートメントに対して有効な ISOLATION BIND オプション値。 この値は、次のいずれかの値です。
'UR'
非コミット読み取り
'CS'
カーソル固定
'RS'
読み取り固定
'RR'
反復可能読み取り
BIND_CDATA CHAR(1) NOT NULL このステートメントに対して有効な状態にある CURRENTDATA BIND オプション値。 この値は、次のいずれかの値です。
'Y'
CURRENTDATA(YES)
'N'
CURRENTDATA(NO)
BIND_DYNRL CHAR(1) NOT NULL このステートメントに対して有効な DYNAMICRULES BIND オプション値。 この値は、次のいずれかの値です。
'B'
DYNAMICRULE(BIND)
'R'
DYNAMICRULES(RUN)
BIND_DEGRE CHAR(1) NOT NULL このステートメントに対して有効な状態にある CURRENT DEGREE 特殊レジスター値。 この値は、次のいずれかの値です。
'A'
CURRENT DEGREE = ANY
'1'
CURRENT DEGREE = 1
BIND_SQLRL CHAR(1) NOT NULL このステートメントに対して有効な CURRENT RULES 特殊 レジスター値。 この値は、次のいずれかの値です。
'D'
現在の規則 = DB2
'S'
CURRENT RULES = SQL
BIND_CHOLD CHAR(1) NOT NULL このステートメントに対する PREPARE の WITH HOLD 属性 値。 この値は、次のいずれかの値です。
'Y'
WITH HOLD で指定された初期 PREPARE
'N'
WITHOUT HOLD で指定された初期 PREPARE
STAT_TS TIMESTAMP NOT NULL 統計のタイム・スタンプ。 これは、IFCID 318 が開始したときのタイム・スタンプです。 ※2
STAT_EXEC INTEGER NOT NULL この列は推奨されません。 代わりに STAT_EXECB を使用してください。
STAT_GPAG INTEGER NOT NULL この列は推奨されません。 代わりに STAT_GPAGB を使用してください。 ※1
STAT_SYNR INTEGER NOT NULL この列は推奨されません。 代わりに STAT_SYNRB を使用してください。 ※1
STAT_WRIT INTEGER NOT NULL この列は推奨されません。 代わりに STAT_WRITB を使用してください。 ※1
STAT_EROW INTEGER NOT NULL この列は推奨されません。 代わりに STAT_EROWB を使用してください。 ※1
STAT_PROW INTEGER NOT NULL この列は推奨されません。 代わりに STAT_PROWB を使用してください。 ※1
STAT_SORT INTEGER NOT NULL この列は推奨されません。 代わりに STAT_SORTB を使用してください。 ※1
STAT_INDX INTEGER NOT NULL この列は推奨されません。 代わりに STAT_INDXB を使用してください。
STAT_RSCN INTEGER NOT NULL この列は推奨されません。 代わりに STAT_RSCNB を使用してください。
STAT_PGRP INTEGER NOT NULL この列は推奨されません。 代わりに STAT_PGRPB を使用してください。
STAT_ELAP FLOAT NOT NULL このステートメントに対して使用された累算経過時間。 ※2
STAT_CPU FLOAT NOT NULL このステートメントに対して使用された累算 CPU 時間。 ※2
STAT_SUS_SYNIO FLOAT NOT NULL このステートメントに対して行われた同期入出力操作の累 算待ち時間。 ※2
STAT_SUS_LOCK FLOAT NOT NULL ステートメントに対するロック要求のための累算待機時間。 ※2
STAT_SUS_SWIT FLOAT NOT NULL ステートメントに対する同期実行単位切り替えのための累算待ち時間 ※2
STAT_SUS_GLCK FLOAT NOT NULL この文に対するグローバル・ペアレントLロックの累積待ち時間。 ※2
STAT_SUS_OTHR FLOAT NOT NULL 別スレッドが行った読み取りアクティビティーの累算待ち 時間。 ※2
STAT_SUS_OTHW FLOAT NOT NULL 別スレッドが行った書き込みアクティビティーの累算待ち 時間。 ※2
STAT_RIDLIMT INTEGER NOT NULL この列は推奨されません。 代わりに STAT_SORTB を使用してください。
STAT_RIDSTOR INTEGER NOT NULL この列は推奨されません。 代わりに STAT_SORTB を使用してください。
EXPLAIN_TS TIMESTAMP NOT NULL ステートメント・キャッシュ表にデータが設定された 時点のタイム・スタンプ。
SCHEMA VARCHAR(128) NOT NULL CURRENT SCHEMA 特殊レジスター値。
STMT_TEXT CLOB(2M) NOT NULL Explain しようとするステートメント。
STMT_ROWID ROWID NOT NULL GENERATED ALWAYS ステートメントの ROWID。
BIND_RO_TYPE CHAR(1) NOT NULL WITH DEFAULT 文3の REOPTオプションの現在の仕様:
'N'
REOPT(NONE) またはそれと同等なもの
'1'
REOPT(ONCE) またはそれと同等なもの
'A'
REOPT(AUTO) またはそれと同等なもの
'O'
現行プランは最適と見なされ、REOPT(AUTO) の必要はありません
BIND_RA_TOT INTEGER NOT NULL WITH DEFAULT REOPT ( AUTO) オプションにより動的ステートメントに対して発行された REBIND コマンドの合計数。1、3
GROUP_MEMBER varchar(24) not null with default EXPLAINを実行した Db2 のメンバー名。 EXPLAINが実行された際に、 Db2 サブシステムがデータ共有環境になかった場合、この列は空白になります。
STAT_EXECB BIGINT NOT NULL WITH DEFAULT このステートメントが実行された回数。 カーソル付きステートメントの場合、これはOPENの数です。 2
STAT_GPAGB BIGINT NOT NULL WITH DEFAULT ステートメントに対して実行されるページ取得操作の回数 ※2
STAT_SYNRB BIGINT NOT NULL WITH DEFAULT ステートメントに対して実行される同期バッファー読み取りの回数 ※2
STAT_WRITB BIGINT NOT NULL WITH DEFAULT ステートメントに対して実行されるバッファー書き込み操作の回数 ※2
STAT_EROWB BIGINT NOT NULL WITH DEFAULT ステートメントについて調査される行の数 ※2
STAT_PROWB BIGINT NOT NULL WITH DEFAULT ステートメントについて処理される行の数 ※2
STAT_SORTB BIGINT NOT NULL WITH DEFAULT ステートメントに対して実行されるソートの数。 2
STAT_INDXB BIGINT NOT NULL WITH DEFAULT ステートメントに対して実行されるインデックススキャンの数。 2
STAT_RSCNB BIGINT NOT NULL WITH DEFAULT ステートメントに対して実行されるテーブルスペースのスキャン数。 2
STAT_PGRPB BIGINT NOT NULL WITH DEFAULT 文.2のために作成される並列グループの数
STAT_RIDLIMTB BIGINT NOT NULL WITH DEFAULT RIDの数が Db2 の制限を超えてしまうため、RIDリストが使用されなかった回数。 2
STAT_RIDSTORB BIGINT NOT NULL WITH DEFAULT RIDリストを格納するのに十分なストレージ容量がないため、RIDリストが使用されなかった回数。 2
LITERAL_REPL CHAR(1) NOT NULL WITH DEFAULT リテラル値が「&」記号に置き換えられているキャッシュされたステートメントを特定します。 3
'R'
このステートメントは、 CONCENTRATE STATEMENTS WITH LITERALS の動作によって準備されます。このステートメントのリテラル定数は「&」に置き換えられています。
'D'
このステートメントは、異なるリテラル再利用可能基準と重複するステートメント・インスタンスです。
ブランク
リテラル値は置き換えられません。
STAT_SUS_LATCH FLOAT NOT NULL WITH DEFAULT ステートメントのラッチ要求のための累積待ち時間。
STAT_SUS_PLATCH FLOAT NOT NULL WITH DEFAULT ステートメントのページ・ラッチ要求のための累積待ち時間。
STAT_SUS_DRAIN FLOAT NOT NULL WITH DEFAULT ステートメントのドレーン・ロック要求のための累積待ち時間。
STAT_SUS_CLAIM FLOAT NOT NULL WITH DEFAULT ステートメントのクレーム・カウント要求のための累積待ち時間。
STAT_SUS_LOG FLOAT NOT NULL WITH DEFAULT ステートメントのログ書き込みプロセス要求のための累積待ち時間。
EXPANSION_REASON CHAR(2) NOT NULL WITH DEFAULT
この列は、アーカイブ表またはテンポラル表を参照するステートメントのみに適用されます。 他のステートメントについては、この列はブランクです。

CURRENT TEMPORAL BUSINESS_TIME 特殊レジスター、CURRENT TEMPORAL SYSTEM_TIME 特殊レジスター、および SYSIBMADM.GET_ARCHIVE 組み込みのグローバル変数の効果を示します。 これらの項目は、BUSTIMESENSITIVE、SYSTIMESENSITIVE、および ARCHIVESENSITIVE バインド・オプションによって制御されます。

以下の条件のいずれかに該当する場合、Db2 は特定の構文を暗黙的に照会に追加します。
  • SYSIBMADM.GET_ARCHIVE グローバル変数が Y に設定され、ARCHIVESENSITIVE バインド・オプションが YES に設定されている。
  • CURRENT TEMPORAL BUSINESS_TIME 特殊レジスターが非 NULL であり、BUSTIMESENSITIVE バインド・オプションが YES に設定されている。
  • CURRENT TEMPORAL SYSTEM_TIME 特殊レジスターが非 NULL であり、SYSTIMESENSITIVE バインド・オプションが YES に設定されている。
この列は、次のいずれかの値を取ります。
'A'
照会には、SYSIBMADM.GET_ARCHIVE 組み込みグローバル変数の結果として暗黙照会変換が含まれています。
'B'
照会には、CURRENT TEMPORAL BUSINESS_TIME 特殊レジスターの結果として暗黙照会変換が含まれています。
'S'
照会には、CURRENT TEMPORAL SYSTEM_TIME 特殊レジスターの結果として暗黙照会変換が含まれています。
'SB'
照会には、CURRENT TEMPORAL SYSTEM_TIME 特殊レジスターと CURRENT TEMPORAL BUSINESS_TIME 特殊レジスターの結果として暗黙照会変換が含まれています。
ブランク
照会には暗黙照会変換が含まれません。
ACCELERATED CHAR(10) キャッシュされた動的ステートメントが、アクセラレーター・サーバーへのアクセラレーション用に準備されたかどうかを示します。 可能な値は以下のとおりです。
「いいえ」
キャッシュされたステートメントはアクセラレーション用に準備されませんでした。 これはデフォルト値です。

この値は、以下の条件の下でもキャッシュされたステートメントに適用されます。

  • 動的ステートメントが準備される時点で、照会アクセラレーション動作が指定されていなかった場合または明示的に NONE に設定されていた場合。
  • 動的ステートメントが準備される時点で、ALL 以外の照会アクセラレーション動作が指定されていた場合。 Db2 指定されたクエリの高速化動作に基づいて高速化の対象外であったため、高速化のための文を準備しませんでした。
「はい」
指定された照会アクセラレーション動作に基づき、キャッシュされたステートメントがアクセラレーター・サーバーへのアクセラレーション用に準備されました。 動的ステートメントの準備時に照会のアクセラレーションの動作が指定されると、Db2 は、動的ステートメントの準備操作でこのキャッシュ項目をキャッシュ一致候補と見なすことができます。 ステートメントの準備時に照会のアクセラレーションの動作が指定されていない場合、またはその動作が明示的に NONE に設定されている場合、Db2 は、準備操作でこのキャッシュ項目をキャッシュ一致と見なしません。
'NEVER'
キャッシュされたステートメントは、アクセラレート不可能なため、アクセラレーション対象サーバーへのアクセラレーション用に準備されませんでした。
  • ステートメントの準備で照会のアクセラレーションの動作が ENABLE、 ENABLE WITH FAILBACK、または ELIGIBLE に設定されている場合、Db2 は、準備操作でこのキャッシュ項目を最初にキャッシュ一致候補と見なします。 このアクションでは、ステートメントが以前にアクセラレート不可能なステートメントとしてキャッシュされたかどうかを検証します。

(次の行に続く。)

ACCELERATED (継続)  

(前の行からの続き。 )

'NEVER' (continued)
  • ステートメントの準備で照会のアクセラレーションの動作が ALL に設定されている場合、Db2 は準備操作でこのキャッシュ項目をキャッシュ一致候補と見なしません。
  • ステートメントの準備で照会のアクセラレーションの動作が指定されていないか、または明示的に NONE に設定されている場合、Db2 は準備操作でこのキャッシュ項目をキャッシュ一致候補と見なしません。
'ACCEL_ONLY'
キャッシュされたステートメントは、アクセラレーターへのアクセラレーション用に準備されました。 ステートメントは、少なくとも 1 つのアクセラレーター専用表を参照し、アクセラレーター・サーバー内で実行するためにのみ準備できます。 動的ステートメントの準備時に照会のアクセラレーションの動作が指定されると、Db2 は、動的ステートメントの準備操作でこのキャッシュ項目をキャッシュ一致候補と見なすことができます。 ステートメントの準備時に照会のアクセラレーションの動作が指定されていない場合、またはその動作が明示的に NONE に設定されている場合、Db2 は、準備操作でこのキャッシュ項目をキャッシュ一致と見なしません。

照会のアクセラレーション動作が、QUERY_ACCELERATION サブシステム・パラメーター、QUERYACCELERATION バインド・オプション、または CURRENT QUERY ACCELERATION 特殊レジスターのいずれかで指定され、優先順位に応じて決まります。 優先順位 (低から高) は以下のとおりです。

  • QUERY_ACCELERATION サブシステム・パラメーター
  • QUERYACCELERATION バインド・オプション (指定されている場合)
  • 明示的な SET CURRENT QUERY ACCELERATION ステートメント
STAT_ACC_ELAP BIGINT アクセラレーターの累算経過時間。
STAT_ACC_CPU BIGINT アクセラレーターの累算 CPU 時間。
STAT_ACC_ROW BIGINT アクセラレーターから返された行の累算数。
STAT_ACC_BYTE BIGINT アクセラレーターから返されたバイトの累算数。
STAT_ACC_1ROW BIGINT 照会結果の先頭行がアクセラレーターから使用可能になるまでの待ち時間。
STAT_ACC_DB2 BIGINT Db2 が照会結果を要求するまでアクセラレーターが待機した合計時間。
STAT_ACC_EXEC BIGINT アクセラレーターの累算実行時間。
STAT_ACC_WAIT BIGINT アクセラレーターの累算キュー待ち時間。
ACCEL_OFFLOAD_ELIGIBLE CHAR(1)
「いいえ」
ステートメントはアクセラレーションに適格ではありません。 これはデフォルト値です。
「はい」
アクセラレーター・サーバーが Db2 サブシステムで使用可能になると、このステートメントがアクセラレーションの候補になります。
ACCELERATOR_NAME VARCHAR(128) 照会を処理したアクセラレーター・サーバーの連結名。
PER_STMT_ID BIGINT NOT NULL 固定化された動的 SQL ステートメントのステートメント ID。 この項目が SYSIBM.SYSDNQRY カタログ表に安定化された場合またはそのカタログ表からロードされた場合は、この値が設定されます。
STBLGRP VARCHAR(128) NOT NULL START DYNQRY コマンドで指定された安定化グループ名。 この項目が SYSIBM.SYSDNQRY カタログ表に安定化された場合またはそのカタログ表からロードされた場合は、この値が設定されます。
QUERY_HASH CHAR(16) NOT NULL FOR BIT DATA ステートメント・テキストにより生成されたハッシュ・キー。
QUERY_HASH_VERSION INTEGER NOT NULL QUERY_HASH のバージョン。
STABILIZED CHAR(1) NOT NULL ステートメントが安定化されたかどうかを示します。
変更の開始APPLCOMPAT変更の終わり 変更の開始VARCHAR(10) NOT NULL変更の終わり 変更の開始動的 SQL ステートメントのアプリケーション互換性レベル。変更の終わり
CNO BIGINT NOT NULL 動的照会収集モニターのコマンド番号 (該当する場合)。 それ以外の場合は 0 です。
STAT_SUS_CHILDLLOCK FLOAT NOT NULL WITH DEFAULT ステートメントの子 L ロックの累算待ち時間。
STAT_SUS_OTHERLLOCK FLOAT NOT NULL WITH DEFAULT ステートメントの他の L ロックの累算待ち時間。
STAT_SUS_PAGESETPLOCK FLOAT NOT NULL WITH DEFAULT ステートメントのグローバル・ページ・セットまたはパーティション L ロックの累算待機時間。
STAT_SUS_PAGEPLOCK FLOAT NOT NULL WITH DEFAULT ステートメントのページ P ロックの累算待ち時間。
STAT_SUS_OTHERPLOCK FLOAT NOT NULL WITH DEFAULT ステートメントの他の P ロックの累算待ち時間。
STAT_SUS_PIPE FLOAT NOT NULL WITH DEFAULT ステートメントのパイプ要求の累算待ち時間。
STAT_SUS_PQSYNC FLOAT NOT NULL WITH DEFAULT ステートメントの並列照会待機の累積待機時間。
STAT_ACC_TWDP BIGINT アクセラレーター遅延プロトコルの累積待機時間。
STAT_ACC_NWDP BIGINT アクセラレーター遅延プロトコルの待機時間が期限切れになったステートメントの累積数。
STMT_HASHID2 CHAR(8) FOR BIT DATA SQL文を識別するために使用します。 正規化されたSQLステートメントのテキストに基づく。
  • 静的SQL用の特定のBINDオプション、および動的SQL用のPREPARE属性を含みます。
  • 静的SQL用のCOLLIDとパッケージ名を含みます。
  • 動的SQLのコリジョンとパッケージ名を除外します。
  • 静的SQLのバージョン名を除く。
STMT_HASH2VER INTEGER STMT_HASHID2 値を計算する際に使用されるハッシュアルゴリズムのバージョンを識別するために使用されます。
変更の開始AP_PLANID変更の終わり 変更の開始CHAR(16) FOR BIT DATA変更の終わり 変更の開始拡張タイムスタンプ値の形式で、SQL文のBINDまたはPREPARE最適化用の一意の識別子。変更の終わり
AP_PLANHASH CHAR(16) FOR BIT DATA アクセスパスに寄与するPLAN_TABLEの選択されたカラムに基づいて、アクセスパスを識別するために使用される。 この値は、APPLNAME、PROGNAME、VERSIONなど、アクセスパスに影響を与えない列を除外しています。
AP_PLANHASHVER INTEGER AP_PLANHASH値の計算に使用されるハッシュアルゴリズムのバージョンを識別するために使用される。
CONNECTION_TYPE CHAR(8) そのステートメントに対してPREPAREまたはBINDを実行した接続タイプ。
CLIENT_USERID VARCHAR(128) クライアント・ユーザー ID の名前情報。
CLIENT_APPLNAME VARCHAR(255) クライアント・アプリケーションの名前情報。
CLIENT_WRKSTNNAME VARCHAR(255) クライアント・ワークステーションの名前情報。
変更の開始STAT_ZIIP_CPU変更の終わり 変更の開始FLOAT変更の終わり 変更の開始 IBM 専用エンジンでSQLの実行に費やされたCPU時間。変更の終わり
注:
  1. 指定値が 2147483647 を超えている場合、列には値 2147483647 が格納されます。
  2. COLLID の値が DSNDYNAMICSQLCACHE である場合、統計は、同じステートメントの実行間およびスレッド間において累積的になります。 COLLID の値が DSNEXPLAINMODEYES である場合、ステートメントの単一実行のみについての値になります。 COLLID の値が DSNEXPLAINMODE EXPLAIN である場合、すべての統計列の値は 0 です。
  3. この列は、COLLID 列の値が「DSNEXPLAINMODEYES」または「DSNEXPLAINMODEEXPLAIN」の場合は適用できません。

プログラム固有のプログラミングインターフェース情報を終了します。