2020.09.04
指定した期間のSQLランキングを確認する方法

指定した期間のSQLランキングを確認する方法
1. 概要
紹介する手順は、以下のような場面で活用することが出来ます。
- 指定した期間の実行時間が遅いSQLのランキングを確認したい
- 指定した期間で実行回数が多いSQLのランキングを確認したい
- 指定した期間で読取ブロック数が多いSQLのランキングを確認したい
ヒント
MaxGauge for Oracleは、0.05秒間隔で実行中のSQLの情報を取得しています。
取得した実行中のSQL情報からSQLランキングを生成しています。
2. 指定した期間のSQLランキングを確認する
指定した期間のSQLランキングを確認するには、[Performance Analyzer]画面の[SQL分析][上位N分析]で確認することが出来ます。
2.1. SQLランキングの確認方法
1. [PERFORMANCE ANALYZER]画面に遷移します
[Realtime Monitor]画面の右上部[PERFORMANCE ANALYZER]ボタンをクリックして[Performance Analyzer]画面を表示します。
2. [SQL分析][上位N分析]画面に遷移します
- [Performance Analyzer]の画面左メニューから[SQL分析]をクリック
- 画面上段メニューの[上位N分析]をクリックします
3. SQLランキングの検索条件を指定します
- 調査対象のインスタンスをプルダウンメニューから選択します
- SQLランキングの集計期間となる期間を指定します
- [検索]ボタンをクリックします
4. SQLランキングの種類を選択します
検索条件で指定した期間のランキングが表示されるのでランキングを[SQL]に変更します
- [SQL]タブを選択します
- 確認したいSQLランキングの種類を選択します
表示可能なランキングの種類
Elapsed Time | SQLの実行時間順のランキングを表示します |
---|---|
CPU Time | CPU時間順のランキングを表示します |
Logical Reads | 論理読取ブロック数順のランキングを表示します |
Physical Reads | 論理読取ブロック数順のランキングを表示します |
Executions | 実行時間順のランキングを表示します |
5. SQLランキングの表示
選択したSQLランキングが表形式で表示されます。
表示されたランキングの見方
表示されるランキングは、選択した「ランキングの種類」別に降順にソートされて表示されます。
例えば、「Elapsed Time」のランキングを表示した場合は、集計期間に実行されたSQLでSQLの実行時間の合計が多い順にランキング表示されます。
(1秒間実行するSQLが集計期間内に1000回実行された場合、合計時間は1000秒になります)
メモ
MaxGauge for Oracleは、0.05秒間隔で実行中のSQLの情報を取得しています。
SQLの実行時間が0.05秒より短いSQLは、MaxGaugeで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の物理読取ブロック数の合計 |
Elapsed Time/exec (Sec) | 対象SQLの1実行辺りの平均実行時間 |
CPU Time/exec (Sec) | 対象SQLの1実行辺りの平均CPU時間 |
Wait Time/exec (Sec) | 対象SQLの1実行辺りの平均待機時間 |
Logical Reads/exec (blocks) | 対象SQLの1実行辺りの平均論理読取ブロック数 |
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個以上のブロックをアクセスした合計回数 |