IBM Support

[Db2] db2support を使用して SQL パフォーマンス問題の調査に必要な資料を取得する手順

Question & Answer


Question

db2support コマンドを使用して SQL のパフォーマンス問題を調査するために必要な資料を収集する方法を教えてください。

Answer

db2support は、クライアント・マシンまたはサーバー・マシンについての環境データを収集して、 システム・データを含むファイルを圧縮ファイル・アーカイブにまとめるコマンドです。
-sf オプションで調査対象の SQL ステートメントがひとつ入ったファイルを指定することにより、その SQL のアクセス・プランやパフォーマンス情報を一度に取得できます。また、-cl <level> オプションで、収集するパフォーマンス情報を以下のレベルで指定することが可能です。

0 = カタログ、db2look、dbcfg、dbmcfg、db2set のみ収集
1 = 0 に加えて exfmt を収集
2 = 1 に加えて .db2service を収集 (これがデフォルトです)
3 = 2 に加えて db2batch を収集。3 のみ SQL が実際に実行されます

以下の手順を実行してください。
 
  1. 準備作業
    パフォーマンスを測定したい SQL ステートメントを記述したファイルを用意します。
    • パラメーター・マーカーを使っていない SQL ステートメント
      下記例のように、測定したいステートメントを含むファイルを用意してください。SQL ステートメントの最後に区切り文字としてセミコロンを追加してください。
      select empno,firstnme,lastname from db2inst1.employee where job='MANAGER' ;
    • パラメーター・マーカーを使っている SQL ステートメント
      下記例のように、測定したいステートメントを含むファイルを用意してください。SQL ステートメントの最後に区切り文字としてセミコロンを追加してください。
      また、-cl 3 を指定して db2batch を収集する場合は、#PARAM ディレクティブを使用して、各パラメーター・マーカーごとに値を指定します。最初の #PARAM ディレクティブが最初のパラメーター・マーカーに対応します。
      下記の例では、#BGBLK と #EOBLK で挟まれたブロックを 3 回繰り返し実行し、ブロックのそれぞれの反復では、各パラメーターごとに指定された値セットからランダムな値に選択されます。
      --#BGBLK 3
      --#PARAM 16 18
      --#PARAM 'A00' 'D11' 'E21'
      select firstnme,lastname from employee where edlevel > ? and workdept = ?;
      --#EOBLK
  2. db2support コマンドの実行
    1. インスタンス・オーナーで、データベース・サーバーにログインします。
      (複数パーティション・データベースの場合はカタログ・ノードのあるサーバーにログインします。)
    2. コマンド行プロセッサーから以下のコマンドを実行して資料を取得します。
      db2support <outputdir> -d <dbname> -sf <sql file> -cl <level> -localhost
      <outputdir> は db2support の出力先ディレクトリー名に置き換えて下さい (/tmp/db2support/outputdir など)。注意3を参照ください。
      <dbname> は対象のデータベース名に置き換えて下さい。
      <sql file> は「1.準備作業」で用意した SQL ステートメントを記述したファイル名に置き換えてください。
      <level> は収集するパフォーマンス情報に応じて 0 から 3 の数字に置き換えてください。
      -localhost は複数パーティション・データベース (DPF) で必ず指定してください。

      上記を実行すると db2support.zip ファイル内に db2supp_opt.zip というファイルが含まれるようになります。
      db2supp_opt.zip を展開すると、パフォーマンス情報の書き出された各種ファイルが OPTIMIZER ディレクトリー内に格納されています。
注意事項
運用上の考慮点
  • -cl 3 を指定すると SQL ステートメントは実際に実行されるため、大規模な照会や更新処理を含む場合は負荷やデータの反映等をあらかじめご考慮ください。また、SQL が完了しない場合は、このオプションは指定しないようにしてください。
  • -cl 3 で db2batch を取得する場合は、同時に他の処理が実行されていると有効なデータが取得できない可能性があるため、出来る限り db2support のみ単独で実行するようにしてください。
  • アクセス・プラン情報を取得する際に、SQL にホスト変数が使用されている場合は値を ? に変えてください。
  • db2batch が正確にとれているか確認する場合は、db2supp_opt.zip を展開し、OPTIMIZER ディレクトリー配下の ファイル db2batch_out.opt_out をお確かめください。
  • アクセス・プラン情報が正確にとれているか確認する場合は、db2supp_opt.zip を展開し、OPTIMIZER ディレクトリー配下のファイル exfmt_badquery.opt_out をお確かめください。

関連情報
db2support - 問題分析および環境収集ツール・コマンド
db2batch - ベンチマーク・ツール・コマンド
db2exfmt - Explain 表フォーマット・コマンド
[DB2 LUW] パスポート・アドバンテージによく寄せられる質問
Choosing options for collecting optimizer db2support data

お問い合わせ先
技術的な内容に関して、パスポート・アドバンテージの契約のもと 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":"a8m500000008PliAAE","label":"DB2 Tools-\u003Edb2support"},{"code":"a8m500000008PkqAAE","label":"Performance"}],"ARM Case Number":"","Platform":[{"code":"PF002","label":"AIX"},{"code":"PF010","label":"HP-UX"},{"code":"PF016","label":"Linux"},{"code":"PF027","label":"Solaris"},{"code":"PF033","label":"Windows"}],"Version":"All Versions"}]

Document Information

Modified date:
15 August 2023

UID

swg22004496