📣
TiDB Cloud Premium はパブリックプレビュー中です。エンタープライズワークロード向けの無制限のスケーリング、即時の弾力性、高度なセキュリティを提供します。このページは自動翻訳されたものです。原文はこちらからご覧ください。

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」をクリックしてください。

    Top SQL

  • ブラウザでhttp://127.0.0.1:2379/dashboard/#/topsqlにアクセスしてください。 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 Top SQLを有効にするには、以下の手順に従ってください。

  1. Top SQLページにアクセスしてください。
  2. 「設定を開く」をクリックします。設定領域の右側で、 「機能を有効にする」をオンにします。
  3. 「保存」をクリックしてください。

この機能を有効にした後、 Top SQLがデータを読み込むまで最大1分ほどお待ちください。その後、CPU負荷の詳細が表示されます。

UIに加えて、TiDBシステム変数tidb_enable_top_sql設定することで、 Top SQL機能を有効にすることもできます。

SET GLOBAL tidb_enable_top_sql = 1;

Top SQLを使用する

以下は、 Top SQL を使用するための一般的な手順です。

  1. Top SQLページにアクセスしてください。

  2. 負荷を監視したい特定のTiDBまたはTiKVインスタンスを選択してください。

    Select Instance

    どの TiDB または TiKV インスタンスを監視すればよいか不明な場合は、任意のインスタンスを選択できます。また、クラスタの CPU 負荷が極端に偏っている場合は、まず Grafana のグラフを使用して、監視したい特定のインスタンスを特定できます。

  3. Top SQLが提示するグラフと表をご覧ください。

    Chart and Table

    棒グラフの棒の長さは、その時点でSQL文が消費したCPUリソースの量を表しています。異なる色は、異なる種類のSQL文を区別するために使用されています。ほとんどの場合、グラフ内の該当時間帯において、CPUリソースのオーバーヘッドが大きいSQL文のみに注目すれば十分です。

  4. 表内のSQL文をクリックすると、詳細情報が表示されます。その文のさまざまな実行プランの詳細な実行メトリクス(例えば、1秒あたりの平均クエリ数であるCall/secや、1秒あたりの平均インデックス行スキャン数であるScan Indexes/secなど)を確認できます。

    Details

  5. これらの最初の手がかりに基づいて、 SQLステートメントまたは遅いクエリページをさらに調査して、CPU 消費量の増加や SQL ステートメントの大規模なデータ スキャンの根本原因を見つけることができます。

    タイムピッカーで時間範囲を調整するか、グラフで時間範囲を選択することで、問題のより正確で詳細な分析を行うことができます。時間範囲を狭くすると、最大1秒単位の精度でより詳細なデータが得られます。

    Change time range

    グラフが最新でない場合は、 「更新」ボタンをクリックするか、 「更新」ドロップダウンリストから「自動更新」オプションを選択してください。

    Refresh

  6. テーブルレベルまたはデータベースレベルでCPUリソースの使用状況をビューで、より上位レベルでのリソース使用状況を迅速に把握できます。現在、TiKVインスタンスのみがサポートされています。

    TiKVインスタンスを選択し、次に「テーブル別」または「データベース別」を選択します。

    Select aggregation dimension

    集計結果をより高いレベルでビュー:

    Aggregated results at DB level

Top SQLを無効にする

以下の手順に従うことで、この機能を無効にすることができます。

  1. Top SQLページにアクセスしてください。
  2. 右上隅の歯車アイコンをクリックして設定画面を開き、 「機能を有効にする」をオフにします。
  3. 「保存」をクリックしてください。
  4. ポップアップ表示されたダイアログボックスで、 「無効にする」をクリックします。

UIに加えて、TiDBシステム変数tidb_enable_top_sql設定することで、 Top SQL機能を無効にすることもできます。

SET GLOBAL tidb_enable_top_sql = 0;

よくある質問

1.Top SQLを有効にできず、UI に「必要なコンポーネントNgMonitoring が開始されていません」と表示されます

TiDBダッシュボードに関するFAQ参照してください。

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 Top SQLチャートに表示される各時点の棒グラフは、その時点で実行中のすべてのSQL文のCPUオーバーヘッドを示しています。

このページは役に立ちましたか?