28.4.26 INFORMATION_SCHEMA INNODB_ TABLESTATS 视图
INNODB_TABLESTATS 表视图提供了低级别状态信息关于 InnoDB 表。这个数据用于 MySQL 优化器计算查询 InnoDB 表时使用哪个索引。这些信息来自内存数据结构,而不是磁盘存储的数据。没有对应的内部 InnoDB 系统表。
InnoDB 表在这个视图中被表示,如果它们自上次服务器重启以来已经打开,并且没有超出表缓存的年龄限制。对于持久化统计信息可用的表,这个视图总是包含这些表的信息。
表统计信息仅更新 DELETE 或 UPDATE 操作,修改了索引列的操作。对非索引列进行操作不更新统计信息。
ANALYZE TABLE
清除表统计信息,并将 STATISTICS_INITIALIZED 列设置为 Uninitialized。下次访问表时,统计信息将被重新收集。
相关使用信息和示例,请见第17.15.3节,“InnoDB INFORMATION_SCHEMA Schema Object Tables”。
INNODB_TABLESTATS
表具有以下列:
-
TABLE_ID
表示可用统计信息的表标识符;与
INNODB_TABLES.TABLE_ID
相同值。 -
NAME
表名;与
INNODB_TABLES.NAME
相同值。 -
STATS_INITIALIZED
如果统计信息已经收集,则该值为
Initialized
,否则为Uninitialized
。 -
NUM_ROWS
表当前估算的行数。每个DML操作后更新。未提交事务插入或删除数据时,值可能不准确。
-
CLUST_INDEX_SIZE
存储聚簇索引的磁盘页面数,这个索引持有
InnoDB
表数据的主键顺序。如果没有收集统计信息,则该值可能为null。 -
OTHER_INDEX_SIZE
存储所有次要索引的磁盘页面数。 如果没有收集统计信息,则该值可能为null。
-
MODIFIED_COUNTER
DML 操作(如
INSERT
、UPDATE
、DELETE
)修改的行数,也包括外键约束的级联操作。这一列每次重新计算表统计信息时都会被重置。 -
AUTOINC
用于任何自增操作的下一个数字。
AUTOINC
值的变化速度取决于自增号请求的次数和每次请求授予的数量。 -
REF_COUNT
当这个计数器达到零时,可以从表缓存中 evict 表元数据。
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
语句来查看这张表的列信息,包括数据类型和默认值。