该 INNODB_TABLESTATS
视图提供了低级状态信息关于 InnoDB
表的视图。这些数据由 MySQL 优化器用于计算查询 InnoDB
表时使用哪个索引。这信息来自内存数据结构,而不是磁盘上的数据。没有相应的内部 InnoDB
系统表。
InnoDB
表在该视图中表示,如果它们自上次服务器重启以来已经打开,并且尚未从表缓存中过期。具有持久统计信息的表总是该视图的一部分。
表统计信息仅在 DELETE
或 UPDATE
操作修改索引列时更新。统计信息不更新非索引列的修改操作。
ANALYZE TABLE
清除表统计信息,并将 STATS_INITIALIZED
列设置为 Uninitialized
。统计信息将在下一次访问表时重新收集。
有关使用信息和示例,请参阅 第 17.15.3 节,“InnoDB INFORMATION_SCHEMA 模式对象表”。
该 INNODB_TABLESTATS
视图具有以下列:
-
TABLE_ID
表示统计信息可用的表的标识符;与
INNODB_TABLES.TABLE_ID
相同。 -
NAME
表名;与
INNODB_TABLES.NAME
相同。 -
STATS_INITIALIZED
如果统计信息已经收集,则值为
Initialized
,否则为Uninitialized
。 -
NUM_ROWS
表中的当前估算行数。在每个 DML 操作后更新。该值可能不准确,如果未提交的事务正在插入或删除表中。
-
CLUST_INDEX_SIZE
聚簇索引的磁盘页数,该索引以主键顺序存储
InnoDB
表数据。如果尚未收集表统计信息,则该值可能为空。 -
OTHER_INDEX_SIZE
表的所有次要索引的磁盘页数。如果尚未收集表统计信息,则该值可能为空。
-
MODIFIED_COUNTER
由 DML 操作(例如
INSERT
、UPDATE
、DELETE
)和外键级联操作修改的行数。该列在每次重新计算表统计信息时重置。 -
AUTOINC
下一个要分配的自动递增号码。该值的变化率取决于自动递增号码的请求次数和每次请求的号码数量。
-
REF_COUNT
当该计数器达到零时,表元数据可以从表缓存中删除。
示例
mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_TABLESTATS where TABLE_ID = 71\G
*************************** 1. row ***************************
TABLE_ID: 71
NAME: test/t1
STATS_INITIALIZED: Initialized
NUM_ROWS: 1
CLUST_INDEX_SIZE: 1
OTHER_INDEX_SIZE: 0
MODIFIED_COUNTER: 1
AUTOINC: 0
REF_COUNT: 1
注意
-
该表主要用于高级性能监控或开发 MySQL 性能相关扩展。
-
您需要拥有
PROCESS
权限才能查询该表。 -
使用
INFORMATION_SCHEMA
COLUMNS
表或SHOW COLUMNS
语句来查看该表的列的更多信息,包括数据类型和默认值。