IBM Support

[Db2] db2batch による SQL ステートメントのパフォーマンスの測定方法

Question & Answer


Question

コマンド・ラインから特定の SQL ステートメントのパフォーマンスを簡易的に測定する方法を教えて下さい。

Answer

db2batch を利用して SQL ステートメントのパフォーマンスを測定できます。
同時にスナップショット情報も取得されるため、パフォーマンスの悪い SQL ステートメントのボトルネックを特定することも可能です。

実行例

【パラメーター・マーカーを使っていないステートメント】
  1. 測定したいステートメントを含むファイル (input.sql) を用意してください。ステートメントの最後に区切り文字としてセミコロンを追加します。
    SELECT EMPNO,FIRSTNME,LASTNAME FROM DB2INST1.EMPLOYEE WHERE JOB='MANAGER' ;
  2. 以下のように db2batch を実行します。データベース名には接続するデータベース名を指定してください。 ユーザー ID/パスワードには、接続に使用する接続ユーザーのユーザー ID とパスワードをスラッシュで区切って指定してください。分離レベルには指定したいレベルを RR、RS、CS、UR から指定してください。
    db2batch -d [データベース名] -f input.sql -a [ユーザー ID/パスワード] -r db2batch.txt -i complete -iso [分離レベル] -msw all on -o r 0 p 5
  3. 出力された db2batch.txt から、ステートメントの実行時間やスナップショット情報が確認できます。

【パラメーター・マーカーを使っているステートメント】
  1. 測定したいステートメントを含むファイル (input.sql) を用意してください。ステートメントの最後に区切り文字としてセミコロンを追加してください。
    SELECT EMPNO,FIRSTNME,LASTNAME FROM DB2INST1.EMPLOYEE WHERE JOB=? AND SALARY > ? ;
  2. パラメーター・マーカーにバインドする値を含むファイル (param.txt) を用意してください。パラメーターは半角スペース等の空白文字で区切ってください。
    'MANAGER' 80000
  3. 以下のように db2batch を実行してください。データベース名には接続するデータベース名を指定してください。 ユーザー ID/パスワードには、接続に使用する接続ユーザーのユーザー ID とパスワードをスラッシュで区切って指定してください。分離レベルには指定したいレベルを RR、RS、CS、UR から指定してください。
    db2batch -d [データベース名] -f input.sql -m param.txt -a [ユーザー ID/パスワード] -r db2batch.txt -i complete -iso [分離レベル] -msw all on -o r 0 p 5
  4. 出力された db2batch.txt から、ステートメントの実行時間やスナップショット情報が確認できます。

出力例
* タイム・スタンプ: Wed Aug 28 2013 16:23:18 JST
---------------------------------------------

* SQL ステートメント番号 1:

SELECT EMPNO,FIRSTNME,LASTNAME FROM DB2INST1.EMPLOYEE WHERE JOB=? AND SALARY>? ;

* 2 個の提供パラメーターのリスト:
*   'MANAGER'
*   80000

EMPNO  FIRSTNME   LASTNAME
------ ---------- ----------

* 6 行取り出され、0 行出力されました。

* 準備時間:              0.005099 秒
* 実行時間:              0.000260 秒
* 取り出し時間:          0.000202 秒
* 経過時間:              0.005560 秒 (complete)

            モニター情報

インスタンス名                       = db2inst1
ノード名                             =
ノード・タイプ                       = ローカルとリモート・クライアントを持つ Enterprise Server Edition
スナップショット・タイム・スタンプ   = 2013-08-28 16:23:19.144924

...以下省略

運用上の考慮点
db2batch は内部で実際に SQL ステートメントを実行するため、時間がかかる SQL ステートメント を指定した場合は完了までに相応の時間がかかります。
UPDATE、DELETE、INSERT 等の更新ステートメントを指定した場合は、実際にその更新が実行されます。

関連情報
db2batch - ベンチマーク・ツール・コマンド
 
お問合せ先
技術的な内容に関して、パスポート・アドバンテージの契約のもと 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":"a8m500000008PkqAAE","label":"Performance"}],"ARM Case Number":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"All Versions"}]

Document Information

Modified date:
31 August 2023

UID

swg21649021