やりたいこと
Db2環境で発行するSQLの処理時間を確認する。
環境情報
- DB2 v11.5
- RHEL 7
やり方
db2batchコマンドを利用する。
$ which db2batch ~/sqllib/bin/db2batch
SQL分を記載したファイルを用意した上で
select * from sales;
以下のように引数にてデータベースへの接続情報を入力すると
$ db2batch -d XX -a DB2INST1/XX -f test.sql -i complete -o f -1 p 1 o 5
以下のようにSQLの実行結果及び計測結果が出力される。
* 2176 row(s) fetched, 2176 row(s) output. * Prepare Time is: 0.007392 seconds * Execute Time is: 0.007063 seconds * Fetch Time is: 0.022255 seconds * Elapsed Time is: 0.036710 seconds (complete) * Summary Table: Type Number Repetitions Total Time (s) Min Time (s) Max Time (s) Arithmetic Mean Geometric Mean Row(s) Fetched Row(s) Output --------- ----------- ----------- -------------- -------------- -------------- --------------- -------------- -------------- ------------- Statement 1 1 0.036710 0.036710 0.036710 0.036710 0.036710 2176 2176 * Total Entries: 1 * Total Time: 0.036710 seconds * Minimum Time: 0.036710 seconds * Maximum Time: 0.036710 seconds * Arithmetic Mean Time: 0.036710 seconds * Geometric Mean Time: 0.036710 seconds --------------------------------------------- * Timestamp: ...
以下、補足です。
補足
各オプションの数値の意味としてはfオプションがフェッチする行数を全てにしていてoオプションは照会最適化レベルのデフォルト値です。よってfオプションを小さくした場合はSELECT文も数行しか実行されず早い結果が返ってきます。
尚、SQL文のセミコロンが抜けていると以下のような警告文が出た上で該当の行に記載したコマンドの実行/計測は行われないので注意が必要です。
** Warning, no delimiter was found for the final SQL statement in the input. This statement will be ignored. * Summary Table: Type Number Repetitions Total Time (s) Min Time (s) Max Time (s) Arithmetic Mean Geometric Mean Row(s) Fetched Row(s) Output --------- ----------- ----------- -------------- -------------- -------------- --------------- -------------- -------------- ------------- * Total Entries: 0 * Total Time: 0.000000 seconds * Minimum Time: 0.000000 seconds * Maximum Time: 0.000000 seconds * Arithmetic Mean Time: 0.000000 seconds * Geometric Mean Time: 0.000000 seconds ---------------------------------------------
以上。