LoginSignup
1
0
お題は不問!Qiita Engineer Festa 2024で記事投稿!
Qiita Engineer Festa20242024年7月17日まで開催中!

Db2 for i のSQLパフォーマンスデータ取得手順 と User_Info / User_Info_Basic の比較

Last updated at Posted at 2024-06-26

IBM i サービスの下記2つはほぼ同じデータを取得できますが、処理速度が体感上結構変わります。

QSYS2.User_Info
QSYS2.User_Info_Basic

この2つのSQLモニターを取得して処理時間を比較してみたいと思います。

Db2 for i SQLパフォーマンス・モニター(DBモニター)の取得手順

①ACS, Navigator for i, IBM i OSコマンドでデータ取得を開始

ACSの場合

ACS -> データベース -> SQL Performance Center -> パフォーマンス・モニター の画面から、、

image.png

新規 -> パフォーマンス・モニター を選択します。次へボタンを押します。

image.png

DBモニター名(任意)とデータの保管先ライブラリー(任意)を指定します。次へボタンを押します。

image.png

この画面で、取得するSQLの範囲を限定できます。SQLパフォーマンス・モニターはSQL実行の明細を取得するのでシステム負荷が高い処理、と言えます。できる限り無用なデータ収集はさけるべきでしょう。

今回はACS スクリプト実行画面からQZDASOINITジョブ経由でIBM i サービスを実行します。ユーザー・プロファイルも自分のものなので、その二つに絞るように選択しました。

image.png

次へボタンを押すと確認画面が出るので終了ボタンを押します。(画面省略)

Navigator for i の場合

執筆時点ではNavigator for i の旧版(2001ポート)のみ実行できるようです。(ということはIBM i 7.4以前でのみ実行可能)

データーベース → すべてのタスク → ヘルスおよびパフォーマンス → 新規SQLパフォーマンス・モニター を開きます。

image.png

※以降の指定方法はACSと同様なので省略します。

IBM i OSコマンドから

STRDBMON

コマンドで実行します。
こちらも今回は詳細省略します。

②ACSからSQLパフォーマンス・モニターの状態を確認する。

パフォーマンス・モニターの画面を見ると、上で指定した、USER_INFO_DBMON01 が開始されています。

image.png

以上でSQLのデータ取得準備が完了します。

SQLを実行しデータを取得する。

それではACSスクリプト実行から IBM i サービス2つを実行します。

実行するIBM i サービスは以下の2つです。

SELECT * FROM QSYS2.USER_INFO
  WHERE SIGN_ON_ATTEMPTS_NOT_VALID > 0 ;

SELECT * FROM QSYS2.USER_INFO_BASIC
  WHERE SIGN_ON_ATTEMPTS_NOT_VALID > 0 ;

※2つのSQLステートメントを実行するので1つ1つをセミコロン ; で区切ります。
実行時の画面がこちら。

image.png

SQLパフォーマンス・モニターを停止する。

SQLの実行が完了したら、SQLパフォーマンス・モニターを停止します。

ACSから対象のモニターを右クリックして 終了 を選択します。

image.png

以上でデータ収集が完了します。

SQLパフォーマンス・モニター・データの分析

分析もACSから開始できます。SQLパフォーマンスモニターの画面で、モニター名を右クリックして、ステートメントの表示を選択します。

image.png

次の画面が表示されます。左側のウィンドウで表示するSQLを絞り込めます。ここでは2つしか実行していないのでフィルター無しで全件表示(2件表示)しています。

image.png

ここでまず処理時間が分かります。(この時間はIBM i 内部=サーバー処理時間です)
1行目:USER_INFO は処理時間 約2.79秒
2行目: USER_INFO_BASIC は処理時間 約0.01秒

でした。かなり異なりますね。
私の感覚が相当アバウトだという事も改めて分かりました(^^;

ちょっと深掘りしてみる Visual Explain で図示してみる

今回の目的は達成されていますが、もうちょっと見てみましょう。
1行目を右クリックして Visual Explainを選択してみます。

image.png

すると、1行目のSQL(USER_INFOビュー)の実行明細が図示されます。

image.png

左側のアイコン1つ1つがSQLの実行段階明細を表示しており、それぞれの処理時間や処理レコード件数、どのようなアクセス方法・処理方法か等の明細が右側に表示されます。

上記は最終ステップの処理明細を図示していますが、左側で別なアイコンをクリックすると、クリックした処理についての明細が表示されます。

image.png

もうひとつ、2行目もVisual Explainすると、、、

image.png

2つ上の1行目の図示と比較するだけでずいぶん処理ステップが少ないこともわかりますね。

Visual Explainの使い方などは探すと出てくると思います。そのうちやってみたいと思います。

db2batch でIBM i Db2 for i のSQLを測定できるか?

すみません、本日時間切れです・・また別稿で検証してみます。(guri guriさんすみません・・)

1
0
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0