TIDBインデックス使用法

TiDB v8.0.0以降、 TIDB_INDEX_USAGEテーブルが提供されますTIDB_INDEX_USAGE使用すると、現在のTiDBノード上のすべてのインデックスの使用状況統計を取得できます。デフォルトでは、TiDBはSQL文の実行中にこれらのインデックス使用状況統計を収集します。この機能を無効にするには、 instance.tidb_enable_collect_execution_info設定項目またはtidb_enable_collect_execution_infoシステム変数をオフにします。

USE INFORMATION_SCHEMA; DESC TIDB_INDEX_USAGE;
+--------------------------+-------------+------+------+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------------------------+-------------+------+------+---------+-------+ | TABLE_SCHEMA | varchar(64) | YES | | NULL | | | TABLE_NAME | varchar(64) | YES | | NULL | | | INDEX_NAME | varchar(64) | YES | | NULL | | | QUERY_TOTAL | bigint(21) | YES | | NULL | | | KV_REQ_TOTAL | bigint(21) | YES | | NULL | | | ROWS_ACCESS_TOTAL | bigint(21) | YES | | NULL | | | PERCENTAGE_ACCESS_0 | bigint(21) | YES | | NULL | | | PERCENTAGE_ACCESS_0_1 | bigint(21) | YES | | NULL | | | PERCENTAGE_ACCESS_1_10 | bigint(21) | YES | | NULL | | | PERCENTAGE_ACCESS_10_20 | bigint(21) | YES | | NULL | | | PERCENTAGE_ACCESS_20_50 | bigint(21) | YES | | NULL | | | PERCENTAGE_ACCESS_50_100 | bigint(21) | YES | | NULL | | | PERCENTAGE_ACCESS_100 | bigint(21) | YES | | NULL | | | LAST_ACCESS_TIME | datetime | YES | | NULL | | +--------------------------+-------------+------+------+---------+-------+ 14 rows in set (0.00 sec)

TIDB_INDEX_USAGEテーブルの列は次のとおりです。

  • TABLE_SCHEMA : インデックスを含むテーブルが属するデータベースの名前。
  • TABLE_NAME : インデックスを含むテーブルの名前。
  • INDEX_NAME : インデックスの名前。
  • QUERY_TOTAL : インデックスにアクセスするステートメントの合計数。
  • KV_REQ_TOTAL : インデックスにアクセスするときに生成される KV リクエストの合計数。
  • ROWS_ACCESS_TOTAL : インデックスにアクセスするときにスキャンされる行の合計数。
  • PERCENTAGE_ACCESS_0 : 行アクセス率 (テーブル内の行の総数に対するアクセスされた行の割合) が 0 である回数。
  • PERCENTAGE_ACCESS_0_1 : 行アクセス率が 0% から 1% の間となる回数。
  • PERCENTAGE_ACCESS_1_10 : 行アクセス率が 1% ~ 10% となる回数。
  • PERCENTAGE_ACCESS_10_20 : 行アクセス率が 10% ~ 20% となる回数。
  • PERCENTAGE_ACCESS_20_50 : 行アクセス率が 20% ~ 50% の間となる回数。
  • PERCENTAGE_ACCESS_50_100 : 行アクセス率が 50% ~ 100% の間となる回数。
  • PERCENTAGE_ACCESS_100 : 行アクセス率が 100% となる回数。
  • LAST_ACCESS_TIME : インデックスへの最終アクセス時刻。

クラスターTIDBインデックス_使用法

TIDB_INDEX_USAGEテーブルは、単一の TiDB ノード上のすべてのインデックスの使用状況統計のみを提供します。クラスター内のすべての TiDB ノードのインデックス使用状況統計を取得するには、 CLUSTER_TIDB_INDEX_USAGEテーブルをクエリする必要があります。

TIDB_INDEX_USAGE番目のテーブルと比較すると、 CLUSTER_TIDB_INDEX_USAGE番目のテーブルのクエリ結果にはINSTANCEのフィールドが追加されています。このフィールドには、クラスター内の各ノードの IP アドレスとポート番号が表示されるため、異なるノード間の統計情報を区別するのに役立ちます。

USE INFORMATION_SCHEMA; DESC CLUSTER_TIDB_INDEX_USAGE;

出力は次のようになります。

+--------------------------+-------------+------+------+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------------------------+-------------+------+------+---------+-------+ | INSTANCE | varchar(64) | YES | | NULL | | | TABLE_SCHEMA | varchar(64) | YES | | NULL | | | TABLE_NAME | varchar(64) | YES | | NULL | | | INDEX_NAME | varchar(64) | YES | | NULL | | | QUERY_TOTAL | bigint(21) | YES | | NULL | | | KV_REQ_TOTAL | bigint(21) | YES | | NULL | | | ROWS_ACCESS_TOTAL | bigint(21) | YES | | NULL | | | PERCENTAGE_ACCESS_0 | bigint(21) | YES | | NULL | | | PERCENTAGE_ACCESS_0_1 | bigint(21) | YES | | NULL | | | PERCENTAGE_ACCESS_1_10 | bigint(21) | YES | | NULL | | | PERCENTAGE_ACCESS_10_20 | bigint(21) | YES | | NULL | | | PERCENTAGE_ACCESS_20_50 | bigint(21) | YES | | NULL | | | PERCENTAGE_ACCESS_50_100 | bigint(21) | YES | | NULL | | | PERCENTAGE_ACCESS_100 | bigint(21) | YES | | NULL | | | LAST_ACCESS_TIME | datetime | YES | | NULL | | +--------------------------+-------------+------+------+---------+-------+ 15 rows in set (0.00 sec)

制限事項

  • TIDB_INDEX_USAGEテーブルのデータは最大 5 分遅延される可能性があります。
  • TiDB が再起動すると、 TIDB_INDEX_USAGEテーブルのデータがクリアされます。
  • TiDB は、テーブルに有効な統計がある場合にのみ、テーブルのインデックスの使用状況を記録します。

続きを読む

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