How To
Summary
Db2 は SQL を実行するとき、SQL コンパイラーでコンパイルした実行モジュール (セクション) を、パッケージ・キャッシュに配置してからランタイム・インタープリターで実行します。
注:SQL コンパイラーもランタイム・インタープリターも機能名であり、実行主体はエージェント (db2agent) スレッドです。
各 SQL の実行で収集された実行時間や待機時間、読み書きの行数などのパフォーマンス情報もパッケージ・キャッシュに記録されます。ただし、パッケージ・キャッシュはキャッシュ・メモリーなので、各 SQL の情報は LRU アルゴリズムで除去されます。
この文書はパッケージ・キャッシュに記録されたパフォーマンス情報を取り出しておき、あとから分析する手法を案内します。
Environment
Db2 9.7 以降
mon_get_pkg_cache_stmt 表関数は Db2 9.7 以降で利用可能です。ただし、収集されるモニター・エレメントはバージョンやフィックスパックによって異なることがあります。
Steps
モニター情報の収集
- データベース管理者としてモニター対象のデータベースに接続します。
db2 connect to <db_name>
- パフォーマンス分析をしたい期間 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"
注2:データベース構成パラメーター MON_ACT_METRICS が BASE (デフォルト) 以上でないと統計は収集されません。
注3:上の例では出力結果 (*.ixf) は export コマンドを実行しているカレント・ディレクトリーに出力されます。 - Linux/UNIX の場合
モニター・データのインポート
- 任意のデータベースに接続します。
db2 connect to <db_name>
- エクスポートされたデータをインポートします。
注:エクスポートされた *.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>"
- インポート先の表がまだ存在しない場合は CREATE INTO でインポートします。
- パフォーマンスを分析します。
たとえば、以下のステートメント実行時間の長いもの上位 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 ;
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"}]
Was this topic helpful?
Document Information
Modified date:
05 October 2023
UID
ibm17030441