パフォーマンス概要の主要指標
TiUPを使用してTiDBクラスターをデプロイする場合、監視システム(PrometheusとGrafana)も同時にデプロイされます。詳細については、 TiDB 監視フレームワークの概要参照してください。
Grafanaダッシュボードは、PD、TiDB、TiKV、Node_exporter、概要、パフォーマンス概要を含む一連のサブダッシュボードに分かれています。診断に役立つ多くのメトリックが用意されています。
パフォーマンス概要ダッシュボードは、TiDB、PD、および TiKV のメトリックを調整し、それぞれを次のセクションで表示します。
概要:データベース時間とSQL実行時間の概要。概要で異なる色を確認することで、データベースのワークロードプロファイルとパフォーマンスのボトルネックを素早く特定できます。
負荷プロファイル: データベース QPS、接続情報、アプリケーションが TiDB と対話する MySQL コマンド タイプ、データベース内部 TSO および KV 要求 OPS、TiKV および TiDB のリソース使用量など、主要なメトリックとリソース使用量。
トップダウンのレイテンシーの内訳: クエリレイテンシーと接続アイドル時間の比率、クエリレイテンシーの内訳、実行中の TSO/KV 要求レイテンシー、TiKV 内の書き込みレイテンシーの内訳。
パフォーマンス概要ダッシュボードを使用すると、パフォーマンスを効率的に分析し、ユーザー応答時間のボトルネックがデータベースにあるかどうかを確認できます。ボトルネックがデータベースにある場合は、データベース時間の概要、ワークロードプロファイル、SQLレイテンシーの内訳を表示することで、データベース内のボトルネックを特定できます。詳細はパフォーマンス分析とチューニングご覧ください。
次のセクションでは、パフォーマンス概要ダッシュボードのメトリックについて説明します。
パフォーマンスの概要
SQLタイプ別のデータベース時間
- データベース時間: 1秒あたりの合計データベース時間
- sql_type: 各タイプのSQL文で1秒あたりに消費されたデータベース時間
SQLフェーズ別のデータベース時間
- データベース時間: 1秒あたりの合計データベース時間
- トークンの取得/解析/コンパイル/実行: 4つのSQL処理フェーズで消費されるデータベース時間
SQL実行フェーズは緑色で、その他のフェーズは全体的に赤色で表示されます。緑色以外の領域が大きい場合は、実行フェーズ以外のフェーズでデータベース時間が大量に消費されていることを意味し、さらなる原因分析が必要です。
SQL実行時間の概要
- 実行時間: SQL 実行中に 1 秒あたりに消費されるデータベース時間
- tso_wait: SQL実行中の1秒あたりの同時TSO待機時間
- KVリクエストタイプ: SQL実行中に各KVリクエストタイプを1秒あたりに待機する時間。KVリクエストは同時実行されるため、合計KVリクエスト待機時間はSQL実行時間を超える場合があります。
- tiflash_mpp: SQL 実行中に 1 秒あたりにTiFlash要求を処理する時間。
緑のメトリクスは一般的なKV書き込みリクエスト(プリライトやコミットなど)、青のメトリクスは一般的な読み取りリクエスト、紫のメトリクスはTiFlash MPPリクエストを表します。その他の色のメトリクスは、注意が必要な予期しない状況を表します。例えば、悲観的ロックKVリクエストは赤で、TSO待機は濃い茶色で表示されます。
青または緑以外の領域が大きい場合は、SQL実行中にボトルネックが発生していることを意味します。例:
- 重大なロック競合が発生した場合、赤色の領域が大きな割合を占めることになります。
- TSO の待ち時間に過度に時間がかかってしまうと、濃い茶色の領域が大きな割合を占めることになります。
QPS
すべてUPDATE
TiDB インスタンスで 1 秒あたりに実行された SQL 文の数 (タイプ別: SELECT
などINSERT
CPSタイプ別
タイプに基づいて、すべての TiDB インスタンスによって 1 秒あたりに処理されるコマンドの数
プランキャッシュOPSを使用したクエリ
- 平均ヒット: すべての TiDB インスタンスで 1 秒あたりに実行プラン キャッシュを使用するクエリの数
- avg-miss: すべての TiDB インスタンスにおける、実行プラン キャッシュを使用していないクエリの数 (1 秒あたり)
avg-hit + avg-miss
はStmtExecute
に等しく、これは 1 秒あたりに実行されるすべてのクエリの数です。
KV/TSO リクエスト OPS
- kvリクエスト合計: すべてのTiDBインスタンスにおける1秒あたりのKVリクエストの合計数
- タイプ別の KV リクエスト数:
Get
などCommit
タイプに基づいてPrewrite
すべての TiDB インスタンスでの 1 秒あたりの KV リクエスト数 - tso - cmd: TiDB がすべての TiDB インスタンスの PD に送信する 1 秒あたりの gRPC リクエストの数。各 gRPC リクエストには、TSO リクエストのバッチが含まれます。
- tso - リクエスト: すべての TiDB インスタンスにおける 1 秒あたりの TSO リクエスト数
通常、 tso - request
tso - cmd
で割った値が、1 秒あたりの TSO 要求バッチの平均サイズになります。
ソース別KVリクエスト時間
- kv リクエスト合計時間: すべての TiDB インスタンスで 1 秒あたりに KV およびTiFlashリクエストを処理する合計時間
- 各 KV リクエストとそれに対応するリクエスト ソースは積み上げ棒グラフを形成し、
external
通常のビジネス リクエストを識別し、internal
内部アクティビティ リクエスト (DDL やauto analyzeリクエストなど) を識別します。
TiDB CPU
- avg: すべての TiDB インスタンスの平均 CPU 使用率
- デルタ: すべての TiDB インスタンスの最大 CPU 使用率からすべての TiDB インスタンスの最小 CPU 使用率を引いた値
- max: すべての TiDB インスタンスの最大 CPU 使用率
TiKV CPU/IO MBps
- CPU-Avg: すべての TiKV インスタンスの平均 CPU 使用率
- CPU デルタ: すべての TiKV インスタンスの最大 CPU 使用率からすべての TiKV インスタンスの最小 CPU 使用率を引いた値
- CPU-MAX: すべての TiKV インスタンス間の最大 CPU 使用率
- IO-Avg: すべての TiKV インスタンスの平均 MBps
- IO-Delt: すべての TiKV インスタンスの最大 MBps からすべての TiKV インスタンスの最小 MBps を引いた値
- IO-MAX: すべての TiKV インスタンスの最大 MBps
間隔
所要時間: 実行時間
- クライアントからのリクエストをTiDBが受信してから、TiDBがそのリクエストを実行し、結果をクライアントに返すまでの時間。通常、クライアントからのリクエストはSQL文の形式で送信されますが、この時間には
COM_PING
、COM_SLEEP
、COM_STMT_FETCH
、COM_SEND_LONG_DATA
などのコマンドの実行時間も含まれる場合があります。 - TiDBはマルチクエリをサポートしています。つまり、クライアントは一度に複数のSQL文(例:
select 1; select 1; select 1;
を送信できます。この場合、このクエリの合計実行時間には、すべてのSQL文の実行時間が含まれます。
- クライアントからのリクエストをTiDBが受信してから、TiDBがそのリクエストを実行し、結果をクライアントに返すまでの時間。通常、クライアントからのリクエストはSQL文の形式で送信されますが、この時間には
平均: すべてのリクエストを実行するのにかかった平均時間
99: すべてのリクエストを実行するためのP99期間
タイプ別の平均: すべての TiDB インスタンス内のすべてのリクエストを実行するのにかかった平均時間 (タイプ
SELECT
UPDATE
収集INSERT
接続アイドル時間
接続アイドル期間は、接続がアイドル状態にある期間を示します。
- avg-in-txn: トランザクション内の接続の平均アイドル時間
- avg-not-in-txn: 接続がトランザクション内にない場合の平均接続アイドル期間
- 99-in-txn: 接続がトランザクション内にある場合の P99 接続アイドル期間
接続数
- 合計: すべてのTiDBインスタンスへの接続数
- アクティブな接続: すべての TiDB インスタンスへのアクティブな接続の数
- tidb-{node-number}-peer: 各TiDBインスタンスへの接続数
- 切断/秒: TiDB クラスタ内の切断回数
- 99-not-in-txn: 接続がトランザクション内にない場合の P99 接続アイドル期間
解析期間、コンパイル期間、実行期間
- 解析時間: SQL文の解析にかかった時間
- コンパイル時間: 解析されたSQL ASTを実行プランにコンパイルするのにかかる時間
- 実行時間: SQL文の実行計画の実行に要した時間
これら 3 つのメトリックにはすべて、すべての TiDB インスタンスの平均期間と 99 パーセンタイル期間が含まれます。
平均 TiDB KV リクエスト期間
Get
、 Prewrite
、 Commit
を含むタイプに基づいて、すべての TiDB インスタンスでの KV 要求の実行に費やされた平均時間。
平均 TiKV GRPC 期間
kv_get
、 kv_prewrite
、 kv_commit
を含むタイプに基づいて、すべての TiKV インスタンスでの gRPC リクエストの実行に費やされた平均時間。
PD TSO 待機/RPC 期間
- wait - avg: すべての TiDB インスタンスで PD が TSO を返すのを待つ平均時間
- rpc - 平均: TiDB が TSO を取得するために PD に gRPC リクエストを送信してから、すべての TiDB インスタンスで TiDB が TSO を受信するまでの平均期間
- wait - 99: すべての TiDB インスタンスで PD が TSO を返すのを待つ P99 期間
- rpc - 99: TiDB が TSO を取得するために PD に gRPC 要求を送信してから、すべての TiDB インスタンスで TiDB が TSO を受信するまでの P99 期間
ストレージ非同期書き込み期間、保存期間、適用期間
- ストレージ非同期書き込み時間: 非同期書き込みにかかる時間
- ストア期間: 非同期書き込み中にストアループで消費される時間
- 適用期間: 非同期書き込み中の適用ループで消費された時間
これら 3 つのメトリックにはすべて、すべての TiKV インスタンスの平均期間と P99 期間が含まれます。
平均storage非同期書き込み時間 = 平均保存時間 + 平均適用時間
追加ログ期間、コミットログ期間、適用ログ期間
- ログ追加時間: Raftがログを追加するのにかかる時間
- コミットログ期間: Raftがログをコミットするのにかかる時間
- ログ適用期間: Raftがログを適用するのにかかる時間
これら 3 つのメトリックにはすべて、すべての TiKV インスタンスの平均期間と P99 期間が含まれます。
パフォーマンス概要パネルのインターフェース
TiFlash
CPU: TiFlashインスタンスごとの CPU 使用率。
メモリ: TiFlashインスタンスごとのメモリ使用量。
IO 使用率: TiFlashインスタンスごとの IO 使用率。
MPP クエリ数: TiFlashインスタンスあたりの 1 秒あたりのTiFlash MPP クエリ数。
要求 QPS: すべてのTiFlashインスタンスによって受信されたコプロセッサ要求の数。
batch
: バッチリクエストの数。batch_cop
: バッチ要求内のコプロセッサ要求の数。cop
: コプロセッサ インターフェイスを介して直接送信されるコプロセッサ要求の数。cop_dag
: すべてのコプロセッサ要求内の DAG 要求の数。super_batch
: スーパーバッチ機能を有効にするリクエストの数。
Executor QPS: すべてのTiFlashインスタンスが受信したリクエスト内の各タイプの DAG Executor の数。1
table_scan
テーブル スキャン Executor です。3 は選択 Executor ですselection
aggregation
集約 Executor ですtop_n
はTopN
Executor ですlimit
制限 Executor です。リクエスト期間の概要: すべてのTiFlashインスタンスのすべてのリクエスト タイプについて、1 秒あたりの合計処理時間の積み上げグラフを提供します。
リクエスト期間: すべてのTiFlashインスタンスにおける各MPPおよびコプロセッサリクエストタイプの合計処理期間。コプロセッサリクエストの受信からリクエストへの応答が完了するまでの時間であり、平均レイテンシーとp99レイテンシーが含まれます。
リクエスト処理時間:すべてのTiFlashインスタンスにおける各MPPおよびコプロセッサリクエストタイプの実際の処理時間。コプロセッサリクエストの実行開始から完了までの時間であり、平均レイテンシーとp99レイテンシーが含まれます。
Raft待機インデックス期間: すべてのTiFlashインスタンスに対して
wait_index
が使用する時間。つまり、read_index
要求を受信してから、リージョンインデックスがread_index
になるまで待機する時間です。Raftバッチインデックス読み取り時間: すべてのTiFlashインスタンスの
read_index
が使用する時間。ほとんどの時間は、リージョンリーダーとのやり取りと再試行に使用されます。インスタンスごとの書き込みスループット:インスタンスごとの書き込みスループット。RaftRaftコマンドとRaftスナップショットを適用した場合のスループットも含まれます。
書き込みフロー: すべてのTiFlashインスタンスによるディスク書き込みのトラフィック。
読み取りフロー: すべてのTiFlashインスタンスによるディスク読み取りのトラフィック。
CDC
CPU 使用率: TiCDC ノードごとの CPU 使用率。
メモリ使用量: TiCDC ノードごとのメモリ使用量。
ゴルーチン数: TiCDC ノードあたりのゴルーチンの数。
Changefeed チェックポイント ラグ: アップストリームとダウンストリーム間のデータ複製の進行ラグ (単位は秒)。
Changefeed 解決 ts ラグ: アップストリーム ノードと TiCDC ノード間のデータ複製の進行ラグ (単位は秒)。
チェンジフィードのステータス:
- 0: 正常
- 1: エラー
- 2: 失敗
- 3: 停止
- 4: 完了
- -1: 不明
Puller 出力イベント/秒: TiCDC ノードの Puller モジュールが Sorter モジュールに 1 秒あたりに送信する行数。
ソーター出力イベント/秒: TiCDC ノードのソーター モジュールがマウント モジュールに 1 秒あたりに送信する行数。
マウンター出力イベント/秒: TiCDC ノードのマウンター モジュールがシンク モジュールに 1 秒あたりに送信する行数。
テーブル シンク出力イベント/秒: TiCDC ノードのテーブル ソーター モジュールがシンク モジュールに 1 秒あたりに送信する行数。
SinkV2 - シンク フラッシュ行数/秒: TiCDC ノードのシンク モジュールがダウンストリームに 1 秒あたりに送信する行数。
トランザクションシンクの完全フラッシュ期間: TiCDC ノードの MySQL シンクによるダウンストリーム トランザクションの書き込みの平均レイテンシーと p999レイテンシー。
MQ ワーカーのメッセージ送信期間パーセンタイル: ダウンストリームが Kafka の場合の MQ ワーカーによるメッセージ送信のレイテンシー。
Kafka 送信バイト: MQ ワークロードでのダウンストリーム トランザクションの書き込みトラフィック。