TiDBダッシュボードメトリクス関係グラフ

TiDBダッシュボードメトリック関係グラフは、v4.0.7で導入された機能です。この機能は、TiDBクラスタの各内部プロセスの期間の監視データの関係グラフを表示します。目的は、各プロセスの期間とそれらの関係をすばやく理解できるようにすることです。

アクセスグラフ

TiDBダッシュボードにログインし、左側のナビゲーションメニューで[クラスター診断]をクリックすると、メトリック関係グラフを生成するページが表示されます。

Metrics relation graph homepage

Range StartTimeRangeDurationを設定した後、 Generate Metrics Relationボタンをクリックすると、メトリック関係グラフのページに入ります。

グラフを理解する

次の画像は、メトリック関係グラフの例です。このグラフは、2020-07-2916:36:00から5分以内のTiDBクラスタの合計クエリ期間に対する各監視メトリックの期間の割合を示しています。グラフには、各監視メトリックの関係も示されています。

Metrics relation graph example

たとえば、 tidb_executeの監視メトリックのノードの意味は次のとおりです。

  • tidb_executeの監視メトリックの合計期間は19306.46秒であり、これは合計クエリ期間の89.4%を占めます。
  • tidb_executeノード自体の継続時間は9070.18秒であり、これは合計クエリ継続時間の42%を占めます。
  • ボックス領域にマウスを合わせると、合計期間、平均期間、平均P99(99パーセンタイル)期間など、メトリックの詳細情報が表示されます。

tidb_execute node example

ノード情報

各ボックス領域は監視メトリックを表し、次の情報を提供します。

  • 監視メトリックの名前
  • 監視メトリックの合計期間
  • 合計クエリ期間に対するメトリックの合計期間の割合

メトリックノードの合計期間=メトリックノード自体の期間+その子ノードの期間。したがって、一部のノードのメトリックグラフには、 tidb_executeのグラフなど、合計期間に対するノード自体の期間の比率が表示されます。

tidb_execute node example1

  • tidb_executeは、監視メトリックの名前であり、TiDB実行エンジンでのSQLクエリの実行期間を表します。
  • 19306.46sは、 tidb_executeのメトリックの合計時間が19306.46秒であることを表します。 89.40%は、19306.46秒がすべてのSQLクエリ(ユーザーSQLクエリとTiDBの内部SQLクエリを含む)に費やされる合計時間の89.40%を占めることを表します。合計クエリ期間はtidb_queryの合計期間です。
  • 9070.18sは、 tidb_executeノード自体の合計実行時間が9070.18秒であることを表し、残りはその子ノードによって消費される時間です。 42.00%は、9070.18秒がすべてのクエリの合計クエリ期間の42.00%を占めることを表します。

ボックス領域にマウスを合わせると、 tidb_executeメトリックノードの詳細が表示されます。

tidb_execute node example2

上の画像に表示されているテキスト情報は、合計期間、合計時間、平均期間、平均期間P99、P90、P80などのメトリックノードの説明です。

ノード間の親子関係

このセクションでは、 tidb_executeのメトリックノードを例として、メトリックの子ノードを紹介します。

tidb_execute node relation example1

上のグラフから、 tidb_executeの2つの子ノードを確認できます。

  • pd_start_tso_wait :トランザクションのstart_tsoを待機する合計時間、つまり300.66秒。
  • tidb_txn_cmd :関連するトランザクションコマンドを実行するTiDBの合計時間(9935.62秒)。

さらに、 tidb_executeにはtidb_copボックス領域を指す点線の矢印もあり、次のように示されます。

tidb_executeにはtidb_copのメトリックの期間が含まれますが、 copの要求が同時に実行される場合があります。たとえば、2つのテーブルでjoinつのクエリを実行するexecuteの期間は60秒であり、その間、テーブルスキャン要求は結合された2つのテーブルで同時に実行されます。 copリクエストの実行時間がそれぞれ40秒と30秒の場合、 copリクエストの合計時間は70秒になります。ただし、 executeの継続時間はわずか60秒です。したがって、親ノードの期間に子ノードの期間が完全に含まれていない場合は、点線の矢印を使用して子ノードを指します。

ノート:

ノードに子ノードを指す点線の矢印がある場合、このノード自体の期間は不正確です。たとえば、 tidb_executeノードでは、ノード自体の継続時間は9070.18秒( 9070.18 = 19306.46 - 300.66 - 9935.62 )です。この式では、 tidb_copつの子ノードの期間はtidb_executeの子ノードの期間に計算されません。しかし実際には、これは真実ではありません。 tidb_execute自体の持続時間である9070.18秒には、 tidb_copの持続時間の一部が含まれており、この部分の持続時間は決定できません。

tidb_kv_requestとその親ノード

tidb_execute node relation example2

tidb_kv_requestの親ノードであるtidb_coptidb_txn_cmd.getには、どちらもtidb_kv_requestを指す点線の矢印があります。これは次のことを示しています。

  • tidb_copの期間には、 tidb_kv_requestの期間の一部が含まれます。
  • tidb_txn_cmd.getの期間には、 tidb_kv_requestの期間の一部も含まれます。

ただし、 tidb_kv_requestの期間がtidb_copに含まれるかどうかを判断するのは困難です。

  • tidb_kv_request.Get :TiDBがGetのタイプのKey-Value要求を送信する期間。
  • tidb_kv_request.Cop :TiDBがCopのタイプのKey-Value要求を送信する期間。

tidb_kv_requestには、子ノードとしてtidb_kv_request.Getノードとtidb_kv_request.Copノードは含まれませんが、後者の2つのノードで構成されます。子ノードの名前プレフィックスは、親ノードの名前に.xxxを加えたものです。これは、子ノードが親ノードのサブクラスであることを意味します。このケースは次のように理解できます。

TiDBがKey-Value要求を送信する合計時間は14745.07秒であり、その間、 GetタイプとCopタイプのKey-Value要求はそれぞれ9798.02秒と4946.46秒を消費します。

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