title | summary |
---|---|
TIDB_INDEX_USAGE |
Learn the `TIDB_INDEX_USAGE` INFORMATION_SCHEMA table. |
Starting from v8.0.0, TiDB provides the TIDB_INDEX_USAGE
table. You can use TIDB_INDEX_USAGE
to get the usage statistics of all indexes on the current TiDB node. By default, TiDB collects these index usage statistics during SQL statement execution. You can disable this feature by turning off the instance.tidb_enable_collect_execution_info
configuration item or the tidb_enable_collect_execution_info
system variable.
Starting from v8.0.0, TiDB provides the TIDB_INDEX_USAGE
table. You can use TIDB_INDEX_USAGE
to get the usage statistics of all indexes on the current TiDB node. By default, TiDB collects these index usage statistics during SQL statement execution. You can disable this feature by turning off the instance.tidb_enable_collect_execution_info
configuration item or the tidb_enable_collect_execution_info
system variable.
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)
The columns in the TIDB_INDEX_USAGE
table are as follows:
TABLE_SCHEMA
: The name of the database to which the table containing the index belongs.TABLE_NAME
: The name of the table containing the index.INDEX_NAME
: The name of the index.QUERY_TOTAL
: The total number of statements accessing the index.KV_REQ_TOTAL
: The total number of KV requests generated when accessing the index.ROWS_ACCESS_TOTAL
: The total number of rows scanned when accessing the index.PERCENTAGE_ACCESS_0
: The number of times the row access ratio (the percentage of accessed rows out of the total number of rows in the table) is 0.PERCENTAGE_ACCESS_0_1
: The number of times the row access ratio is between 0% and 1%.PERCENTAGE_ACCESS_1_10
: The number of times the row access ratio is between 1% and 10%.PERCENTAGE_ACCESS_10_20
: The number of times the row access ratio is between 10% and 20%.PERCENTAGE_ACCESS_20_50
: The number of times the row access ratio is between 20% and 50%.PERCENTAGE_ACCESS_50_100
: The number of times the row access ratio is between 50% and 100%.PERCENTAGE_ACCESS_100
: The number of times the row access ratio is 100%.LAST_ACCESS_TIME
: The time of the most recent access to the index.
The TIDB_INDEX_USAGE
table only provides usage statistics of all indexes on a single TiDB node. To obtain the index usage statistics on all TiDB nodes in the cluster, you need to query the CLUSTER_TIDB_INDEX_USAGE
table.
Compared with the TIDB_INDEX_USAGE
table, the query result of the CLUSTER_TIDB_INDEX_USAGE
table includes an additional INSTANCE
field. This field displays the IP address and port of each node in the cluster, which helps you distinguish the statistics across different nodes.
USE INFORMATION_SCHEMA;
DESC CLUSTER_TIDB_INDEX_USAGE;
The output is as follows:
+-------------------------+-----------------------------------------------------------------+------+------+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------------------+-----------------------------------------------------------------+------+------+---------+-------+
| INSTANCE | varchar(64) | YES | | NULL | |
| ID | bigint(21) unsigned | NO | PRI | NULL | |
| START_TIME | timestamp(6) | YES | | NULL | |
| CURRENT_SQL_DIGEST | varchar(64) | YES | | NULL | |
| CURRENT_SQL_DIGEST_TEXT | text | YES | | NULL | |
| STATE | enum('Idle','Running','LockWaiting','Committing','RollingBack') | YES | | NULL | |
| WAITING_START_TIME | timestamp(6) | YES | | NULL | |
| MEM_BUFFER_KEYS | bigint(64) | YES | | NULL | |
| MEM_BUFFER_BYTES | bigint(64) | YES | | NULL | |
| SESSION_ID | bigint(21) unsigned | YES | | NULL | |
| USER | varchar(16) | YES | | NULL | |
| DB | varchar(64) | YES | | NULL | |
| ALL_SQL_DIGESTS | text | YES | | NULL | |
| RELATED_TABLE_IDS | text | YES | | NULL | |
| WAITING_TIME | double | YES | | NULL | |
+-------------------------+-----------------------------------------------------------------+------+------+---------+-------+
15 rows in set (0.00 sec)
- The data in the
TIDB_INDEX_USAGE
table might be delayed by up to 5 minutes. - After TiDB restarts, the data in the
TIDB_INDEX_USAGE
table is cleared.