重要
このページは英語版のページを機械翻訳しています。原文はこちらからご覧ください。

SQL診断

警告

SQL診断はまだ実験的機能です。実稼働環境で使用することはお勧めしません

SQL診断は、TiDBv4.0で導入された機能です。この機能を使用すると、TiDBの問題をより効率的に見つけることができます。 TiDB v4.0より前は、さまざまなツールを使用してさまざまな情報を取得する必要がありました。

SQL診断システムには次の利点があります。

  • システム全体のすべてのコンポーネントからの情報を統合します。
  • システムテーブルを介して上位層への一貫したインターフェイスを提供します。
  • 監視の概要と自動診断を提供します。
  • クラスタ情報の照会が簡単になります。

概要

SQL診断システムは、次の3つの主要部分で構成されています。

  • クラスター情報テーブル:SQL診断システムは、各インスタンスの個別の情報を取得するための統一された方法を提供するクラスタ情報テーブルを導入します。このシステムは、クラスタトポロジ、ハードウェア情報、ソフトウェア情報、カーネルパラメーター、監視、システム情報、低速クエリ、ステートメント、およびクラスタ全体のログをテーブルに完全に統合します。したがって、SQLステートメントを使用してこれらの情報を照会できます。

  • クラスター監視テーブル:SQL診断システムはクラスタ監視テーブルを導入します。これらのテーブルはすべてmetrics_schemaにあり、SQLステートメントを使用して監視情報を照会できます。 v4.0より前の視覚化された監視と比較すると、このSQLベースの方法を使用して、クラスタ全体のすべての監視情報に対して相関クエリを実行し、さまざまな期間の結果を比較して、パフォーマンスのボトルネックをすばやく特定できます。 TiDBクラスタには多くの監視メトリックがあるため、SQL診断システムは監視要約テーブルも提供し、異常な監視項目をより簡単に見つけることができます。

自動診断:SQLステートメントを手動で実行して、クラスタ情報テーブル、クラスタ監視テーブル、および要約テーブルを照会して問題を見つけることができますが、自動診断を使用すると、一般的な問題をすばやく見つけることができます。 SQL診断システムは、既存のクラスタ情報テーブルと監視テーブルに基づいて自動診断を実行し、関連する診断結果テーブルと診断要約テーブルを提供します。

クラスター情報テーブル

クラスタ情報テーブルは、クラスタのすべてのインスタンスとインスタンスの情報をまとめたものです。これらのテーブルを使用すると、1つのSQLステートメントのみを使用してすべてのクラスタ情報を照会できます。以下は、クラスタ情報テーブルのリストです。

  • クラスタトポロジテーブルinformation_schema.cluster_infoから、クラスタの現在のトポロジ情報、各インスタンスのバージョン、バージョンに対応するGitハッシュ、各インスタンスの開始時間、および各インスタンスの実行時間を取得できます。
  • クラスタ構成テーブルinformation_schema.cluster_configから、クラスタ内のすべてのインスタンスの構成を取得できます。 4.0より前のバージョンの場合、これらの構成情報を取得するには、各インスタンスのHTTPAPIに1つずつアクセスする必要があります。
  • クラスタハードウェアテーブルinformation_schema.cluster_hardwareで、クラスタハードウェア情報をすばやく照会できます。
  • クラスタ負荷テーブルinformation_schema.cluster_loadで、クラスタのさまざまなインスタンスとハードウェアタイプの負荷情報を照会できます。
  • カーネルパラメータテーブルinformation_schema.cluster_systeminfoで、クラスタのさまざまなインスタンスのカーネル構成情報をクエリできます。現在、TiDBはsysctl情報のクエリをサポートしています。
  • クラスタログテーブルinformation_schema.cluster_logで、クラスタログを照会できます。クエリ条件を各インスタンスにプッシュダウンすることにより、クラスタのパフォーマンスに対するクエリの影響は、 grepコマンドの影響よりも少なくなります。

TiDB v4.0より前のシステムテーブルでは、現在のインスタンスのみを表示できます。 TiDB v4.0では、対応するクラスタテーブルが導入されており、単一のTiDBインスタンスでクラスタ全体のグローバルビューを表示できます。これらのテーブルは現在information_schemaにあり、クエリ方法は他のinformation_schemaのシステムテーブルと同じです。

クラスター監視テーブル

さまざまな期間のクラスタ状態を動的に監視および比較するために、SQL診断システムはクラスタ監視システムテーブルを導入しています。すべての監視テーブルはmetrics_schemaにあり、SQLステートメントを使用して監視情報を照会できます。この方法を使用すると、クラスタ全体のすべての監視情報に対して相関クエリを実行し、さまざまな期間の結果を比較して、パフォーマンスのボトルネックをすばやく特定できます。

  • information_schema.metrics_tables :現在多くのシステムテーブルが存在するため、 information_schema.metrics_tablesのテーブルでこれらの監視テーブルのメタ情報を照会できます。

TiDBクラスタには多くの監視メトリックがあるため、TiDBはv4.0で次の監視要約テーブルを提供します。

  • 監視の要約表information_schema.metrics_summaryは、すべての監視データを要約して、各監視メトリックをより効率的にチェックできるようにします。
  • information_schema.metrics_summary_by_labelは、すべての監視データも要約します。特に、このテーブルは、各監視メトリックの異なるラベルを使用して統計を集約します。

自動診断

上記のクラスタ情報テーブルとクラスタ監視テーブルで、SQLステートメントを手動で実行してクラスタのトラブルシューティングを行う必要があります。 TiDB v4.0は、自動診断をサポートしています。既存の基本情報テーブルに基づいた診断関連のシステムテーブルを使用して、診断が自動的に実行されるようにすることができます。自動診断に関連するシステムテーブルは次のとおりです。

  • 診断結果表information_schema.inspection_resultは、システムの診断結果を示しています。診断は受動的にトリガーされます。 select * from inspection_resultを実行すると、システムを診断するためのすべての診断ルールがトリガーされ、システムの障害またはリスクが結果に表示されます。
  • 診断要約表information_schema.inspection_summaryは、特定のリンクまたはモジュールの監視情報を要約したものです。モジュール全体またはリンク全体のコンテキストに基づいて、問題のトラブルシューティングと特定を行うことができます。