Top SQLとは、データベース内で実行頻度が高く、システムリソースを多く消費し、データベースのパフォーマンスに大きな影響を与えるSQL文を指します。OceanBase Cloudは、総実行時間で上位2,000にランクインしたSQLを表示します。
Top SQLリストのクエリ
OceanBase Cloudコンソールにログインします。
左側のナビゲーションペインで、**インスタンス**をクリックします。
インスタンスリストで対象のインスタンスを見つけ、インスタンス名をクリックしてインスタンスのダッシュボードに入ります。
左側のナビゲーションペインで**診断をクリックし、診断ページでリアルタイム診断タブを選択します。システムはデフォルトでSQLタブの下の上位SQL**を表示します。
(オプション)フィルター条件を設定します。
データベース:現在のクラスタ内の任意のデータベースを選択します。
ノード:現在のデータベースの任意のノードを選択します。
時間範囲:過去5分間、過去30分間、過去1時間、過去3時間、**過去6時間**のデータを確認できます。カスタムの時間範囲(最大7日間)も設定可能ですが、以下の制限に注意してください:
- 最大範囲の制限:選択した時間範囲は24時間を超えてはなりません。
- 最小範囲の制限:
- 3日以内:選択した時間範囲は1分以上である必要があります。
- 3日から7日以内:選択した時間範囲は5分以上である必要があります。
SQL ID:クエリ対象のSQL IDを入力します。複数のIDを入力する場合は、半角文字の , または ; で区切ります。
SQLテキスト:クエリ対象のSQLテキストのキーワードを入力します。検索結果には、そのキーワードを含むSQLが表示されます。定数検索はサポートされていません。
その他の条件:**+追加をクリックし、条件を追加する**パネルで、メトリクス、演算子、メトリクス値を設定します。クエリ時に、メトリクスの条件を満たすSQLが検索結果リストに表示されます。
クイックフィルター:フルテーブルスキャン、マルチパーティションスキャン、複数のリモート実行、ハードパース、実行中にエラー発生、**再実行する**をサポートしています。
**クエリ**ボタンをクリックします。
上位SQLタブは、デフォルトで以下のメトリクスを表示します:SQLテキスト、SQL ID、データベース、合計実行数、CPU利用率 (%)、データベース合計実行時間 (ms)、平均実行時間 (ms)、合計エラー数、最大応答時間 (ms)、CPU時間 (ms)、プラン生成時間 (ms)、操作。
SQLテキストの前の**+をクリックし、最後のエラーと統計期間中に報告されたエラーの概要**を確認します。
**データベース**でSQLテキストをフィルタリングします。
合計実行数、CPU利用率 (%)、データベース合計実行時間 (ms)、平均実行時間 (ms)、合計エラー数、最大応答時間 (ms)、CPU時間 (ms)、**プラン生成時間 (ms)**でSQLテキストをソートします。
**操作列で、サンプルを見る**をクリックし、SQLサンプルを確認します。

特定のSQLの**操作列で...をクリックし、スロットリングの設定**を選択すると、レート制限を設定できます。複数のSQLを選択すると、一括でレート制限を設定できます。
リストの右上にある 集約 in クエリ を選択すると、SQLがAggregate In形式で表示されますが、統計データには影響しません。複数のSQL(Aggregate Inを含むSQLも含めて)を選択すると、一括でレート制限を設定できます。
説明
Aggregate In Queryとは、SQL文のIN句内の定数パラメータの個数を無視し、各IN句をすべて定数パラメータが1つしかないものとして扱い、このルールに従ってSQL文をパラメータ化し、SQL IDを計算することを指します。SQL IDが同じSQLは同一種類と見なされ、集約されます。
... をクリックし、テーブルをダウンロード をクリックして、Top SQLリストをダウンロードします。
アイコン
をクリックし、表示された 列の管理 ウィンドウで、より多くのメトリクスを照会します。
Top SQLの比較
**上位SQLタブで、リストの右上にあるTop SQL 比較**をクリックすると、同一SQLが同一ノード内の異なる時間帯や異なるノードでどのように実行されているか、また単一のSQLが異なる時間帯や異なるノードでどのように実行されているかを比較できます。
異なる期間の比較:同一ノード上の同一SQLのベンチマーク期間と比較期間の実行状況を比較・分析し、**詳細の比較および応答時間の傾向の比較**の情報を確認します。
異なるノードの比較:同一SQLのベースラインノードと比較ノードでの実行状況を比較・分析し、**詳細の比較および実行時間比率の傾向の比較**の情報を確認します。
単一SQLの異なる期間の比較:単一SQLまたは集計SQLのベンチマーク期間と比較期間の実行状況を比較・分析し、**データベースの総消費時間および合計実行数**の情報を確認します。
単一SQLの異なるノードの比較:単一SQLまたは集計SQLの異なる分析ノードでの実行状況を比較・分析し、**データベースの総消費時間および合計実行数**の情報を確認します。
説明
- 同一SQLとは、同一のデータベースとSQL IDを指します。
- 異なるノードで比較する場合、結果は異なるノードで同一SQLが実行された場合にのみ出力されます。
- SQL IDを入力してから、対応するSQLの操作列で... > 単一SQL比較を選択することで、単一SQLの異なる期間や異なるノードでの比較分析も可能です。
カスタム列
**上位SQLタブで、リストの右上にある列をカスタマイズ**をクリックすると、必要な他のメトリクスをカスタマイズできます。
ポップアップウィンドウで、**列式**を設定します。例:(@avgCpuTime * @avgDiskReads) / 2
**列名**を入力します。
**OK**をクリックします。
最適化提案と最適化検出履歴の表示
上位SQLタブで、リストの右上にあるビューの最適化の推奨事項をクリックします。ポップアップパネルで、指定したテナントのQPS、平均SQLステートメント処理時間、**CPU使用率**などのメトリクス、およびSQLクラスと構造クラスの最適化提案を確認します。

右上の**検出を開始しますをクリックします。ポップアップウィンドウで、検出時間範囲を選択します(1日を超えてはなりません)、そしてOK**をクリックします。
**検出履歴を最適化する**タブで、タスクの状態と最適化検出履歴を確認します。
