10.10.4 SQL文の統計情報の運用方法
SQL文の統計情報では,各SQL文の動作状況を確認できます。
サーバ定義に指定したオペランドの値を変更したり,実行するSQL文を変更したり,表およびインデクスを変更したりする場合などに,SQL文の統計情報を利用できます。
- メモ
-
SQL文の実行状況を確認する場合,adbstatコマンドで出力したSQL文の統計情報を確認する以外に,SQLトレースファイルに出力されたSQLトレース情報を確認する方法もあります。SQLトレース情報については,「10.11 SQLトレース機能の運用」を参照してください。
(1) SQL文の統計情報の出力と関連情報の取得
SQL文の実行が終了したときに,SQL文の統計情報が統計ログファイルに出力されます。adbstatコマンドを実行すると,統計ログファイルに出力されたSQL文の統計情報を表示できます。なお,エラーとなったSQL文は,SQL文の統計情報が出力されないことがあります。
定期的にSQL文の統計情報を出力することを推奨します。
- ■SQL文の統計情報を出力する方法
-
マニュアルHADB コマンドリファレンスのadbstat(HADBサーバの統計解析)の使用例の特定の日時範囲でSQL文の統計情報を調べる場合を参照してください。
また,SQL文の統計情報を出力するときに,次に示す関連情報もあわせて取得することを推奨します。
-
サーバメッセージログファイル
OSのcpコマンドなどでコピーして取得してください。サーバメッセージログファイルの格納先は,「10.4.2 メッセージログの参照方法(メッセージログの出力先)」を参照してください。
- ヒント
-
サーバ定義adb_sql_text_outオペランドにYを指定すると,HADBサーバが受け付けたすべてのSQL文がサーバメッセージログファイルに出力されます。SQL文の統計情報とサーバメッセージログファイルを確認する際に,対象のSQL文を特定しやすくなるため,サーバ定義adb_sql_text_outオペランドにYを指定することを検討してください。サーバ定義adb_sql_text_outオペランドは,「7.2.6 SQL文に関するオペランド(set形式)」を参照してください。
-
AP識別子
実行中のAPやコマンドに設定されたAP識別子は,adbls -d cnctコマンドで確認してください。APの場合,クライアント定義adb_clt_ap_nameオペランドで指定されたAP識別子が出力されます。
adbls -d cnctコマンドについては,マニュアルHADB コマンドリファレンスのadbls -d cnct(コネクションの状態表示)を参照してください。
クライアント定義adb_clt_ap_nameオペランドについては,マニュアルHADB AP開発ガイドのAPの状態監視に関するオペランドを参照してください。
- メモ
-
複数のAPがある場合,各APが使用するクライアント定義adb_clt_ap_nameオペランドには,それぞれ異なるAP識別子を指定することを推奨します。
-
APのコネクション情報
APのコネクション情報は,adbls -d cnctコマンドで確認してください。
adbls -d cnctコマンドについては,マニュアルHADB コマンドリファレンスのadbls -d cnct(コネクションの状態表示)を参照してください。
-
SQLトレースファイル
OSのcpコマンドなどでコピーして取得してください。SQLトレースファイルの格納先は,「10.11.1 SQLトレース機能とは」を参照してください。
- メモ
-
SQLトレースファイルにSQLトレース情報を出力する方法は,「10.11.5 SQLトレース情報を出力するための準備」を参照してください。
(2) SQL文の統計情報と関連情報の利用方法
定期的に,SQL文の統計情報と関連情報を取得しておくことで,各SQL文の動作状況を確認できます。取得したSQL文の統計情報と関連情報は,チューニングを実施するときに利用できます。
■SQL文の統計情報と関連情報の利用方法
-
SQL文の統計情報を確認する
「SQL文の統計情報」に出力される情報のうち,次に示す情報を確認してください。
-
Timestamp(統計ログファイルの情報の出力日時)
-
AP_name(AP識別子)
-
Connection_information(コネクション情報)
-
SQL_serial_number(コネクションが確立してからのSQL文通番)
-
-
サーバメッセージログファイルと突き合わせる
手順1.で確認した情報と,サーバメッセージログファイル内の情報を突き合わせてください。
-
Timestampの場合
手順1.で確認したTimestampと,サーバメッセージログファイル内のメッセージの出力日時を突き合わせてください。Timestampと出力日時を突き合わせることで,対象のSQL文が,どのような処理を行っていたかを確認できます。
-
AP_nameの場合
手順1.で確認したAP_nameと,サーバメッセージログファイル内のKFAA81000-IメッセージのAP識別子を突き合わせてください。AP_nameとAP識別子を突き合わせることで,対象のAPやコマンドを確認できます。
-
Connection_informationの場合
手順1.で確認したConnection_informationと,サーバメッセージログファイル内のKFAA81000-Iメッセージのコネクション情報を突き合わせてください。Connection_informationとコネクション情報を突き合わせることで,対象のAPのコネクションを確認できます。
-
SQL_serial_numberの場合
サーバ定義adb_sql_text_outオペランドにYを指定している場合,手順1.で確認したSQL_serial_numberと,サーバメッセージログファイル内のKFAA51000-Iメッセージのコネクションが確立してからのSQL文通番を突き合わせてください。SQL_serial_numberとコネクションが確立してからのSQL文通番を突き合わせることで,対象のSQL文を確認できます。
また,エラーになったSQL文の場合は,手順1.で確認したSQL_serial_numberと,サーバメッセージログファイル内のKFAA51005-Iメッセージのコネクションが確立してからのSQL文通番を突き合わせてください。
-
また,実行したSQL文の情報を確認したい場合は,サーバメッセージログファイル内の情報と,SQLトレース情報を突き合わせてください。
SQL文の統計情報と関連情報の利用イメージを,次の図に示します。
また,SQL文の統計情報と関連情報は,次に示すチューニングを実施するときに利用できます。