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 は、テーブルに有効な統計がある場合にのみ、テーブルのインデックスの使用状況を記録します。