IBM Support

[Db2] SQL のコンパイルに必要なステートメント・ヒープの量

Question & Answer


Question

SQL ステートメントをコンパイルする際に、どの程度ステートメント・ヒープが使用されるかを確認する方法はありますか。

Answer

アクセス・プランを取得することで、そのステートメントのコンパイルで使用されたステートメント・ヒープの量を確認できます。
ステートメント・ヒープは、ひとつの SQL をコンパイルするつど割り当てられ、コンパイルの終了で解放されるため、タイミング的に db2pd などでの観察には向いていません。また、所要量はコンパイルする SQL に依存するため、どの SQL をコンパイルしているか不明な状態で観察する意味はありません。
  1. EXPLAIN 表が存在しない場合、EXPLAIN 表を作成します。
    [Db2] Explain 表の作成方法と削除方法
  2. ステートメント・ヒープの消費量を確認したい SQL のアクセス・プランを取得しフォーマットします。
    db2 connect to <データベース名>
    db2 set current explain mode explain
    db2 "select ... "  -- 確認したいステートメントを実行
    db2 set current explain mode no
    db2exfmt -d <データベース名> -1 -o <出力ファイル名>
  3. 出力されたファイル内の HEAPUSE の項目を確認します。
    Arguments:
    ---------
    BLDLEVEL: (Build level)
            DB2 v9.7.0.5 : s111017
    HEAPUSE : (Maximum Statement Heap Usage)
            128 Pages
    PREPTIME: (Statement prepare time)
                   440 milliseconds
    STMTHEAP: (Statement heap size)
             8192
    上の例は、データベース・構成パラメーターで、ひとつのコンパイルに 8192 ページまで許可されているうち、実際には最大で 128 ページまで割り当てたことを示します。なお、STMTHEAP=AUTOMATIC の場合、Explain の STMTHEAP の値に意味はありません。

運用上の考慮点
EXPLAIN は様々な手法で採取できます。詳細は以下の Technote を参照してください。
お問合せ先
技術的な内容に関して、パスポート・アドバンテージの契約のもと 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":"a8m500000008PkcAAE","label":"Compiler"},{"code":"a8m0z000000GozAAAS","label":"Memory"}],"ARM Case Number":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"All Versions"}]

Document Information

Modified date:
23 August 2023

UID

swg21632272