Question & Answer
Question
Db2 V9.7 以降、パッケージ・キャッシュからステートメントを Explain できます。 どのように Explain すればよいか教えてください。
Answer
V9.7 FP1 以降、次の手順でパッケージ・キャッシュに格納されたステートメントからアクセス・プランを取得できます。
運用上の考慮点
V9.7 フィックスパック 1 以前に作成されたデータベースを使用している場合、この手順を実行する前に db2updv97 を完了させておく必要があります。
関連情報
[Db2] Explain 表の作成方法と削除方法
- ステートメントの実行 ID (EXECUTABLE_ID) を確認します。
db2 connect to <db_name> db2 "SELECT EXECUTABLE_ID, VARCHAR(STMT_TEXT,100) AS STMT_TEXT FROM TABLE(MON_GET_PKG_CACHE_STMT(NULL,NULL,NULL,-1)) AS T"
- 指定した EXECUTABLE_ID の EXPLAIN 情報を Explain 表に INSERT します。
注:EXECUTABLE_ID は、同じ SQL でもコンパイルの都度変わります。また、パッケージ・キャッシュから除去されると見つからなくなります。このため、1 と 2 の時間が空いたり、多くの種類の SQL が実行されているデータベースでは EXPLAIN_FROM_SECTION は必ずしも結果を返せない点に注意してください。db2 "CALL EXPLAIN_FROM_SECTION( 前ステップで確認した EXECUTABLE_ID, 'M', NULL, 0, Explain 表のスキーマ, ?, ?, ?, ?, ?)"
- Explain 表の内容をフォーマットします。
db2exfmt -d データベース名 -1 -o 出力ファイル名
注:アクセス・プランを取得するためには、事前に Explain 表を作成しておく必要があります。関連情報を参照してください。
運用上の考慮点
V9.7 フィックスパック 1 以前に作成されたデータベースを使用している場合、この手順を実行する前に db2updv97 を完了させておく必要があります。
関連情報
[Db2] Explain 表の作成方法と削除方法
[{"Type":"MASTER","Line of Business":{"code":"LOB10","label":"Data and AI"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSEPGG","label":"Db2 for Linux, UNIX and Windows"},"ARM Category":[{"code":"a8m500000008PkxAAE","label":"Compiler-\u003EExplain"}],"ARM Case Number":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"10.1.0;10.5.0;11.1.0;11.5.0;9.7.0"}]
Was this topic helpful?
Document Information
Modified date:
26 October 2023
UID
swg21621006