2021.12.16
特定期間のSQLランキングを確認
1. 概要
紹介する手順は、以下のような場面で活用することが出来ます。
- 指定した期間の実行時間が遅いSQLのランキングを確認したい
- 指定した期間で実行回数が多いSQLのランキングを確認したい
- 指定した期間で読取ブロック数が多いSQLのランキングを確認したい
- チューニング対象となるSQLを確認したい
2. 特定期間のSQLランキングを確認
2.1. 調査方法
1. [PERFORMANCE ANALYZER]画面に遷移します
[Realtime Monitor]画面の右上部[PERFORMANCE ANALYZER]ボタンをクリックして[Performance Analyzer]画面を表示します。
2. [SQL分析][上位N分析] 画面に遷移します
- [Performance Analyzer]の画面左メニューから[SQL分析]をクリック
- 画面上段メニューの[上位N分析]をクリックします
3. ランキングの集計対象の条件を入力
[上位N分析]画面よりランキングの集計条件を入力します。
集計対象の期間を検索条件として指定します。スキーマ名、プログラム名、モジュール名の条件を指定する場合は対象を指定して[検索]します。
4. ランキング種類の選択
ランキングで表示されるタブを切り替えることでランキング種類の表示を変更することが出来ます。
[SQL]のタブを選択。
表示したいSQLのランキングの種類を選択します。
ランキングの種類 | 説明 |
---|---|
Elapsed Time | SQLの実行時間順のランキングを表示します |
CPU Time | CPU時間順のランキングを表示します |
Logical Reads | 論理読取ブロック数順のランキングを表示します |
Physical Reads | 論理読取ブロック数順のランキングを表示します |
Executions | SQLの実行回数順のランキングを表示します |
5. ランキングの表示
選択したSQLランキングが表形式で表示されます。
表示されるランキングは、選択した「ランキングの種類」別に降順にソートされて表示されます。
例えば、「Elapsed Time」のランキングを表示した場合は、集計期間に実行されたSQLでSQLの実行時間の合計が多い順にランキング表示されます。
(1秒間実行するSQLが集計期間内に1000回実行された場合、合計時間は1000秒になります)
上位に表示されるSQLが改善対象のSQLの候補となります
調査したいSQLの行を選択して右クリックメニューから 「長期分析」を選択することで [1-SQL] の画面で過去1週間の情報が表示されます
[1-SQL] の画面の説明は、 SQLの実行状況を確認を参照してください。
ランキングで表示される列の説明
列名 | 説明 |
---|---|
SQL ID | SQLのSQL ID |
Schema | 実行したSQLのスキーマ名 |
Program | 実行したSQLのプログラム名 |
Module | 実行したSQLのモジュール名 |
SQL Plan Hash | SQLのSQL Plan Hash |
Elapsed Time (%) | 対象SQLの実行時間の合計が集計期間全体の実行時間に占める割合 |
CPU Time (%) | 対象SQLのCPU時間の合計が集計期間全体のCPU時間に占める割合 |
Logical Reads (%) | 対象SQLの論理読取ブロック数の合計が集計期間全体の論理読取ブロック数に占める割合 |
Physical Reads (%) | 対象SQLの物理読取ブロック数の合計が集計期間全体の物理読取ブロック数に占める割合 |
Executions | 集計期間に対象SQLが実行された回数 |
Elapsed Time (Sec) | 対象SQLの実行時間の合計(秒) |
CPU Time (Sec) | 対象SQLのCPU時間の合計(秒) |
Wait Time (Sec) | 対象SQLの合計待機時間(秒) |
Logical Reads (blocks) | 対象SQLの物理読取ブロック数の合計 |
Physical Reads (blocks) | 対象SQLの1実行辺りの平均実行時間 |
Elapsed Time/exec (Sec) | 対象SQLの1実行辺りの平均CPU時間 |
CPU Time/exec (Sec) | 対象SQLの1実行辺りの平均待機時間 |
Wait Time/exec (Sec) | 対象SQLの1実行辺りの平均論理読取ブロック数 |
Logical Reads/exec (blocks) | 対象SQLの論理読取ブロック数の合計 |
Physical Reads/exec (blocks) | 対象SQLの1実行辺りの平均物理読取ブロック数 |
User IO Wait Time (Sec) | 対象SQLが「User IO」待機クラスで待機した合計時間(秒) |
Application Wait Time (Sec) | 対象SQLが「Application」待機クラスで待機した合計時間(秒) |
Concurrency Wait Time (Sec) | 対象SQLが「Concurrency」待機クラスで待機した合計時間(秒) |
Cluster Wait Time (Sec) | 対象SQLが「Cluster」待機クラスで待機した合計時間(秒) |
Redo Size (byte) | 対象SQLの実行で発生したREDO量の合計(単位:Bytes |
Sort Disk (count) | 対象SQLの実行で発生したDisk Sort の合計回数 |
Sort Rows (count) | 対象SQLの実行の発生した並び替えの合計行数 |
Table Scan Blocks Gotten (block) | 対象SQLの実行で発生したscanオペレーション(TableFull Scan,Index Full Scan,Index Fast Full Scan)時にアクセスしたブロック数の合計 |
Table Scan Rows Gotten (row) | 対象SQLの実行で発生したscanオペレーション(TableFull Scan,Index Full Scan,Index Fast Full Scan)時にアクセスしたレコード数の合計 |
Table Fetch By Rowid (count) | 対象SQLがROWIDを利用してテーブルにアクセスした合計回数 |
Table Fetch Continued By Rowid (count) | 対象SQLが1つのレコードをfetchするために2個以上のブロックをアクセスした合計回数 |