IBM Support

[Db2] パッケージ・キャッシュから Explain を採取する方法

Question & Answer


Question

Db2 V9.7 以降、パッケージ・キャッシュからステートメントを Explain できます。 どのように Explain すればよいか教えてください。

Answer

V9.7 FP1 以降、次の手順でパッケージ・キャッシュに格納されたステートメントからアクセス・プランを取得できます。
  1. ステートメントの実行 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"
    
  2. 指定した 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 表のスキーマ, ?, ?, ?, ?, ?)"
    
  3. Explain 表の内容をフォーマットします。
    db2exfmt -d データベース名 -1 -o 出力ファイル名
注:アクセス・プランを取得するためには、事前に Explain 表を作成しておく必要があります。関連情報を参照してください。

運用上の考慮点
V9.7 フィックスパック 1 以前に作成されたデータベースを使用している場合、この手順を実行する前に db2updv97 を完了させておく必要があります。

関連情報
[Db2] Explain 表の作成方法と削除方法
お問合せ先
技術的な内容に関して、パスポート・アドバンテージの契約のもと Db2 テクニカル・サポートへお問い合わせください。
Db2 テクニカル・サポート

[{"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"}]

Document Information

Modified date:
26 October 2023

UID

swg21621006