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
要为任何基于自动递增的操作发出的下一个数字。
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
语句查看有关此表列的其他信息,包括数据类型和默认值。