Question & Answer
Question
SQL ステートメントをコンパイルする際に、どの程度ステートメント・ヒープが使用されるかを確認する方法はありますか。
Answer
アクセス・プランを取得することで、そのステートメントのコンパイルで使用されたステートメント・ヒープの量を確認できます。
ステートメント・ヒープは、ひとつの SQL をコンパイルするつど割り当てられ、コンパイルの終了で解放されるため、タイミング的に db2pd などでの観察には向いていません。また、所要量はコンパイルする SQL に依存するため、どの SQL をコンパイルしているか不明な状態で観察する意味はありません。
運用上の考慮点
EXPLAIN は様々な手法で採取できます。詳細は以下の Technote を参照してください。
ステートメント・ヒープは、ひとつの SQL をコンパイルするつど割り当てられ、コンパイルの終了で解放されるため、タイミング的に db2pd などでの観察には向いていません。また、所要量はコンパイルする SQL に依存するため、どの SQL をコンパイルしているか不明な状態で観察する意味はありません。
- EXPLAIN 表が存在しない場合、EXPLAIN 表を作成します。
[Db2] Explain 表の作成方法と削除方法 - ステートメント・ヒープの消費量を確認したい SQL のアクセス・プランを取得しフォーマットします。
db2 connect to <データベース名> db2 set current explain mode explain db2 "select ... " -- 確認したいステートメントを実行 db2 set current explain mode no db2exfmt -d <データベース名> -1 -o <出力ファイル名>
- 出力されたファイル内の 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
運用上の考慮点
EXPLAIN は様々な手法で採取できます。詳細は以下の Technote を参照してください。
[{"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"}]
Was this topic helpful?
Document Information
Modified date:
23 August 2023
UID
swg21632272