SQL 診断機能は、TopSQL、SlowSQL、および Suspicious SQL を分析および診断して、データベース パフォーマンスの最適化を支援するように設計されています。
基本概念
SQL 診断の基本概念は次のとおりです。
TopSQL: 選択した期間内で全体的な応答時間が最も長い SQL 文を指します。
SlowSQL: 実行時間が 500 ミリ秒を超える SQL 文を指します。
Suspicious SQL: パフォーマンスの問題を引き起こす可能性のある SQL 文を指し、ルールとアルゴリズムに基づいてフィルタリングされます。
現在、システムには Standard Edition (Key-Value) クラスタインスタンスに関して次の制限があります。
バージョン番号が 4.2.4 以上 4.3.0 未満の KV クラスタインスタンスの場合、TopSQL と SlowSQL の診断情報を表示できます。
その他のバージョンの KV クラスタインスタンスの場合、SlowSQL の診断情報のみを表示できます。
TopSQL
TopSQL は、選択した期間内で全体的な応答時間が最も長い SQL 文を指します。TopSQL に関連して次の操作を実行できます。

[フルテーブルスキャン]、[複数パーティションスキャン]、[複数リモート実行] などのクイックフィルターで TopSQL をフィルタリングします。
[操作] 列の [サンプルの表示] をクリックして、SQL 文を表示します。
SQL テキストの前にあるプラス記号(+)をクリックして、統計期間中の最後のエラーとエラーの概要を表示します。

右上隅にある [最適化候補を表示] をクリックして、最適化センターに移動し、最適化候補を表示します。
右上隅の [topsql 比較] をクリックして、同じノードの異なる期間または異なるノードの同じ期間における同じ SQL 文のステータスとパフォーマンスを比較します。
異なる期間の比較: ベースライン期間と比較期間を指定します。[比較分析] をクリックして、[詳細の比較] と [パフォーマンストレンドの比較] を表示します。

異なるノードの比較: ベースラインノードと比較ノードを指定します。[比較分析] をクリックして、[詳細の比較] と [応答時間トレンドの比較] を表示します。
説明同じデータベース内の同じ SQL ID を持つ 2 つの SQL 文は同じものと見なされます。
異なるノードの比較は、同じ SQL 文が異なるノードで実行された場合にのみ実行されます。それ以外の場合、比較結果は表示されません。
ホストの CPU 使用率が高すぎる場合は、データベースとノードで上位の SQL 文をフィルタリングし、CPU 時間の降順でこれらの SQL 文をソートして、最適化する必要がある SQL 文を見つけます。

SlowSQL
SlowSQL は、実行時間が 500 ミリ秒を超える SQL 文を指します。

[フルテーブルスキャン]、[複数パーティションスキャン]、[複数リモート実行] などのクイックフィルターで SlowSQL をフィルタリングします。
[操作] 列の [サンプルの表示] をクリックして、SQL 文を表示します。
Suspicious SQL
Suspicious SQL は、パフォーマンスの問題を引き起こす可能性のある SQL 文を指し、ルールとアルゴリズムに基づいてフィルタリングされます。次の表に、一般的な診断結果とトラブルシューティングの提案を示します。
診断結果 | トラブルシューティングの提案 |
効果のないヒント | 異常な SQL 文を示しており、データベース管理者 (DBA) はアウトラインを使用して実行計画を修正するかどうかを判断する必要があります。 |
パフォーマンスが低いフルテーブルスキャン | 実行計画とテーブル構造を分析して、SQL に適切なインデックスが使用可能であることを確認します。 |
インデックスを使用してもパフォーマンスが低い | ビジネスシナリオでパフォーマンスが許容できるかどうかを確認します。許容できない場合は、ビジネスロジックを改善するか、インデックスを最適化します。 |
パフォーマンスの低下 | データ分布の変更、リクエストの急増、および実行計画の変更を確認します。 |
パフォーマンスの低下を伴う計画の変更 | DBA に確認してください。アウトラインを使用して実行計画を修正し、SQL 文が異常かどうかを確認できます。 |
実行の急増 | ビジネスボリュームを確認します。SQL 文の実行回数の急増により、全体的なパフォーマンスが低下する可能性があります。 |
CPU 負荷が高すぎる | ビジネスシナリオ、データ分布の変更、リクエストの増加、および実行計画の変更を確認します。 |
ロックの競合の疑い | SQL が再試行されています。これは、ロックの競合が原因である可能性があります。ビジネスロジックを調査して、ロックの競合シナリオが存在するかどうかを判断してください。 |
DML 文によってアクセスされるパーティションが多すぎる | パーティションプルーニングをサポートするように SQL 文を書き直します。 |
バッファーテーブルの疑い | 関連するテーブルが頻繁に更新されているかどうかを確認します。 |
大小のアカウント番号が存在する可能性がある | データスキューの問題があるかどうかを確認します。 |
実行計画が不安定 | 計画の回帰に関する問題があるかどうかを確認します。 |
計画の生成時間が長すぎる | 計画のヒット率が低いなどの問題があるかどうかを確認します。 |
[suspicious SQL] タブには、[SQL テキスト]、[SQL ID]、[データベース]、[診断結果] などが表示されます。
