TiDBダッシュボードのTop SQLページ
Top SQLを使用すると、データベース内の各 SQL ステートメントの CPU オーバーヘッドをリアルタイムで監視して視覚的に調べることができるため、データベースのパフォーマンスの問題を最適化して解決するのに役立ちます。Top Top SQL は、すべての TiDB および TiKV インスタンスから、任意の秒数の SQL ステートメントで要約された CPU 負荷データを継続的に収集して保存します。収集されたデータは、最大 30 日間保存できます。Top Top SQL は、視覚的なグラフと表を表示して、一定期間にわたって TiDB または TiKV インスタンスの CPU 負荷が高くなっている原因となっている SQL ステートメントをすばやく特定します。
Top SQL は次の機能を提供します。
- グラフと表を使用して、CPU オーバーヘッドが最も高い上位 5 種類の SQL ステートメントを視覚化します。
- 1 秒あたりのクエリ数、平均レイテンシー、クエリ プランなどの詳細な実行情報を表示します。
- まだ実行中のものも含め、実行されたすべての SQL ステートメントを収集します。
- 特定の TiDB および TiKV インスタンスのデータを表示できるようにします。
推奨シナリオ
Top SQL はパフォーマンスの問題を分析するのに適しています。次に、 Top SQL の一般的なシナリオをいくつか示します。
- Grafana チャートから、クラスター内の個々の TiKV インスタンスの CPU 使用率が非常に高いことがわかりました。どの SQL ステートメントが CPU ホットスポットを引き起こしているかを把握して、それらを最適化し、分散リソース全体をより有効に活用したいと考えています。
- クラスター全体の CPU 使用率が非常に高く、クエリが遅いことがわかりました。どの SQL ステートメントが現在最も多くの CPU リソースを消費しているかをすぐに把握し、最適化したいと考えています。
- クラスターの CPU 使用率が大幅に変化したため、その主な原因を知りたいと考えています。
- クラスター内で最もリソースを消費する SQL ステートメントを分析し、最適化してハードウェア コストを削減します。
Top SQL は次のシナリオでは使用できません。
- Top SQL は、不正なデータや異常なクラッシュなど、パフォーマンス以外の問題を正確に特定するために使用することはできません。
- Top SQL は、トランザクション ロックの競合など、CPU の高負荷が原因ではないデータベース パフォーマンスの問題の分析をサポートしていません。
ページにアクセスする
次のいずれかの方法で「Top SQL」ページにアクセスできます。
TiDB ダッシュボードにログインしたら、左側のナビゲーション メニューで「Top SQL」をクリックします。
ブラウザでhttp://127.0.0.1:2379/dashboard/#/topsqlアクセスします。3
127.0.0.1:2379
実際の PD インスタンスのアドレスとポートに置き換えます。
Top SQLを有効にする
注記:
Top SQL を使用するには、クラスターを最新バージョンのTiUP (v1.9.0 以上) またはTiDB Operator (v1.3.0 以上) でデプロイまたはアップグレードする必要があります。クラスターを以前のバージョンのTiUPまたはTiDB Operator を使用してアップグレードした場合は、手順FAQ参照してください。
Top SQL は、有効にするとクラスターのパフォーマンスにわずかな影響 (平均 3% 以内) を与えるため、デフォルトでは有効になっていません。次の手順でTop SQL を有効にできます。
- Top SQLページご覧ください。
- [設定を開く] をクリックします。設定領域の右側で、 [機能を有効にする]をオンにします。
- 「保存」をクリックします。
この機能を有効にした後、 Top SQL がデータをロードするまで最大 1 分間待ちます。その後、CPU 負荷の詳細を確認できます。
UI に加えて、TiDB システム変数tidb_enable_top_sql
設定することでTop SQL機能を有効にすることもできます。
SET GLOBAL tidb_enable_top_sql = 1;
Top SQLを使用する
Top SQL を使用する一般的な手順は次のとおりです。
Top SQLページご覧ください。
負荷を監視する特定の TiDB または TiKV インスタンスを選択します。
どの TiDB または TiKV インスタンスを監視すればよいかわからない場合は、任意のインスタンスを選択できます。また、クラスターの CPU 負荷が極端に不均衡な場合は、まず Grafana チャートを使用して、監視する特定のインスタンスを特定できます。
Top SQLが提示するグラフと表を観察します。
棒グラフの棒のサイズは、その時点で SQL ステートメントによって消費された CPU リソースのサイズを表します。異なる色は、異なるタイプの SQL ステートメントを区別します。ほとんどの場合、グラフの対応する時間範囲で CPU リソースのオーバーヘッドが高い SQL ステートメントにのみ注目する必要があります。
表内の SQL ステートメントをクリックすると、詳細情報が表示されます。そのステートメントのさまざまなプランの詳細な実行メトリック (Call/sec (1 秒あたりの平均クエリ数)、Scan Indexes/sec (1 秒あたりにスキャンされるインデックス行の平均数) など) を確認できます。
これらの最初の手がかりに基づいて、 SQL文または遅いクエリ目をさらに調査し、CPU 消費量の増加や SQL ステートメントの大量データ スキャンの根本原因を見つけることができます。
問題をより正確かつ詳細に把握するには、タイム ピッカーで時間範囲を調整するか、グラフで時間範囲を選択します。時間範囲を狭くすると、最大 1 秒の精度でより詳細なデータが提供されます。
グラフが古い場合は、[**更新]ボタンをクリックするか、 [更新]**ドロップダウン リストから [自動更新] オプションを選択できます。
テーブルまたはデータベース レベル別に CPU リソースの使用状況をビュー、より高いレベルでのリソースの使用状況をすばやく特定します。現在、TiKV インスタンスのみがサポートされています。
TiKV インスタンスを選択し、テーブル別またはDB 別を選択します。
集計結果をより高いレベルでビュー。
Top SQLを無効にする
次の手順に従ってこの機能を無効にできます。
- 訪問Top SQLページ 。
- 右上隅の歯車アイコンをクリックして設定画面を開き、機能の有効化をオフにします。
- 「保存」をクリックします。
- ポップアップされたダイアログボックスで、 [無効にする]をクリックします。
UI に加えて、TiDB システム変数tidb_enable_top_sql
を設定することでTop SQL機能を無効にすることもできます。
SET GLOBAL tidb_enable_top_sql = 0;
よくある質問
1. Top SQL を有効にできず、UI に「必要なコンポーネントNgMonitoring が開始されていません」と表示されます。
2. Top SQL を有効にするとパフォーマンスに影響はありますか?
この機能はクラスターのパフォーマンスにわずかな影響を及ぼします。当社のベンチマークによると、この機能を有効にした場合の平均パフォーマンスへの影響は通常 3% 未満です。
3. この機能のステータスはどうなっていますか?
これは現在、一般提供 (GA) された機能であり、本番環境で使用できます。
4. 「その他の記述」の意味は何ですか?
「その他のステートメント」は、上位 5 以外のすべてのステートメントの合計 CPU オーバーヘッドをカウントします。この情報を使用すると、全体と比較して上位 5 のステートメントによって発生した CPU オーバーヘッドを知ることができます。
5. Top SQLによって表示される CPU オーバーヘッドとプロセスの実際の CPU 使用率との間にはどのような関係がありますか?
それらの相関関係は強いですが、まったく同じものではありません。たとえば、複数のレプリカを書き込むコストは、 Top SQLによって表示される TiKV CPU オーバーヘッドにはカウントされません。一般に、CPU 使用率が高い SQL ステートメントでは、 Top SQLに表示される CPU オーバーヘッドが高くなります。
6. Top SQLグラフの Y 軸の意味は何ですか?
消費された CPU リソースのサイズを表します。SQL ステートメントによって消費されるリソースが多いほど、値は高くなります。ほとんどの場合、特定の値の意味や単位を気にする必要はありません。
7. Top SQL は実行中の (未完了の) SQL ステートメントを収集しますか?
はい。各瞬間のTop SQLチャートに表示されるバーは、その瞬間に実行中のすべての SQL ステートメントの CPU オーバーヘッドを示します。