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
语句查看有关此表列的其他信息,包括数据类型和默认值。