IBM Support

[Db2] パッケージ・キャッシュから SQL のパフォーマンス情報を取り出す方法

How To


Summary

Db2 は SQL を実行するとき、SQL コンパイラーでコンパイルした実行モジュール (セクション) を、パッケージ・キャッシュに配置してからランタイム・インタープリターで実行します。
注:SQL コンパイラーもランタイム・インタープリターも機能名であり、実行主体はエージェント (db2agent) スレッドです。

各 SQL の実行で収集された実行時間や待機時間、読み書きの行数などのパフォーマンス情報もパッケージ・キャッシュに記録されます。ただし、パッケージ・キャッシュはキャッシュ・メモリーなので、各 SQL の情報は LRU アルゴリズムで除去されます。
この文書はパッケージ・キャッシュに記録されたパフォーマンス情報を取り出しておき、あとから分析する手法を案内します。

Environment

Db2 9.7 以降
mon_get_pkg_cache_stmt 表関数は Db2 9.7 以降で利用可能です。ただし、収集されるモニター・エレメントはバージョンやフィックスパックによって異なることがあります。

Steps

モニター情報の収集
  1. データベース管理者としてモニター対象のデータベースに接続します。
    db2 connect to <db_name>
  2. パフォーマンス分析をしたい期間 mon_get_pkg_cache_stmt 表関数の結果を定期的に採取します。
    • Linux/UNIX の場合
      TS1=`date +"%Y%m%d_%H%M%S"`
      db2 "export to mon_get_pkg_$TS1.ixf of ixf select current_timestamp as SNAP_TIME, t.* from table(mon_get_pkg_cache_stmt(null,null,null,null)) as t"
    • Windows の場合
      set TS1=%DATE:/=_%_%TIME::=-%
      db2 "export to mon_get_pkg_%TS1%.ixf of ixf select current_timestamp as SNAP_TIME, t.* from table(mon_get_pkg_cache_stmt(null,null,null,null)) as t"
    注1:パッケージ・キャッシュが極端に小さい (数十 MB 程度) の場合や実行される SQL の種類が多すぎる場合、有意な資料が採取できない可能性があります。
    注2:データベース構成パラメーター MON_ACT_METRICS が BASE (デフォルト) 以上でないと統計は収集されません。
    注3:上の例では出力結果 (*.ixf) は export コマンドを実行しているカレント・ディレクトリーに出力されます。
モニター・データのインポート
  1. 任意のデータベースに接続します。
    db2 connect to <db_name>
  2. エクスポートされたデータをインポートします。
    注:エクスポートされた *.ixf ファイルはカレント・ディレクトリーにあると仮定しています。カレント・ディレクトリーにない場合は、ファイル名をフル・パスで指定する必要があります。
    • インポート先の表がまだ存在しない場合は CREATE INTO でインポートします。
      db2 "import from mon_get_pkg<date_time>.ixf of ixf modified by forcecreate create into <new_table_name>"
    • インポート先の表が作成済みの場合は INSERT INTO でインポートします。
      db2 "import from mon_get_pkg<date_time>.ixf of ixf insert into <table_name>"
  3. パフォーマンスを分析します。
    たとえば、以下のステートメント実行時間の長いもの上位 10 個を、実行回数、待機時間とともに表示します。
    select STMT_EXEC_TIME, NUM_EXECUTIONS, TOTAL_ACT_WAIT_TIME, STMT_TEXT from <table_name> order by 1 desc fetch first 10 rows only ;
 
お問合せ先
技術的な内容に関して、パスポート・アドバンテージの契約のもと Db2 テクニカル・サポートへお問い合わせください。
Db2 テクニカル・サポート

Document Location

Worldwide

[{"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":"a8m500000008PkyAAE","label":"Compiler-\u003EOptimization db2explain db2advis"},{"code":"a8m500000008PkqAAE","label":"Performance"}],"ARM Case Number":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"All Versions"}]

Document Information

Modified date:
05 October 2023

UID

ibm17030441