该INNODB_TABLESTATS
表提供有关表的低级状态信息的
InnoDB
视图。MySQL 优化器使用此数据来计算查询
InnoDB
表时使用哪个索引。此信息来自内存中的数据结构,而不是存储在磁盘上的数据。没有对应的内部InnoDB
系统表。
InnoDB
如果表自上次服务器重启后已打开且未超出表缓存,则表将显示在此视图中。永久统计信息可用的表始终显示在此视图中。
仅针对修改索引列的操作DELETE
或
操作
更新表统计信息
。UPDATE
仅修改非索引列的操作不会更新统计信息。
ANALYZE TABLE
清除表统计信息并将STATS_INITIALIZED
列设置为Uninitialized
。下次访问表时会再次收集统计信息。
有关相关的使用信息和示例,请参阅 第 15.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
语句查看有关此表的列的其他信息,包括数据类型和默认值。