24.32.24 INFORMATION_SCHEMA INNODB_SYS_TABLESTATS 视图

INNODB_SYS_TABLESTATStable 提供有关InnoDBtable 的低级状态信息的视图。 MySQL 优化程序使用此数据来计算查询InnoDBtable 时要使用的索引。此信息来自内存中的数据结构,而不是存储在磁盘上的数据。没有相应的内部InnoDB系统 table。

如果自上次服务器重新启动以来已经打开了InnoDB个 table,并且这些 table 尚未过期,则此视图中将 table 示这些 table。此视图始终 table 示具有持久性统计信息的 table。

table 统计信息仅针对修改索引列的DELETEUPDATE操作更新。仅通过修改非索引列的操作不会更新统计信息。

ANALYZE TABLE清除 table 统计信息并将STATS_INITIALIZED列设置为Uninitialized。下次访问该 table 时,将再次收集统计信息。

有关相关用法信息和示例,请参见第 14.16.3 节“ InnoDB INFORMATION_SCHEMA 系统 table”

INNODB_SYS_TABLESTATStable 具有以下列:

  • TABLE_ID

一个标识符,代 table 可获得其统计信息的 table;与INNODB_SYS_TABLES.TABLE_ID相同的值。

  • NAME

table 的名称;与INNODB_SYS_TABLES.NAME相同的值。

  • STATS_INITIALIZED

如果已收集统计信息,则值为Initialized,否则为Uninitialized

  • NUM_ROWS

table 中当前的估计行数。每次 DML 操作后更新。如果未提交的事务正在插入 table 中或从 table 中删除,则该值可能不精确。

  • CLUST_INDEX_SIZE

磁盘上存储聚集索引的页面数,该聚集索引按主键 Sequences 保存InnoDBtable 数据。如果尚未收集该 table 的统计信息,那么此值可能为 null。

  • OTHER_INDEX_SIZE

磁盘上存储 table 的所有辅助索引的页面数。如果尚未收集该 table 的统计信息,那么此值可能为 null。

  • MODIFIED_COUNTER

DML 操作(例如INSERTUPDATEDELETE)以及通过外键进行级联操作修改的行数。每次重新计算 table 统计信息时,都会重置此列

  • AUTOINC

下一个将针对任何基于自动增量的操作发出的数字。 AUTOINC值的变化速率取决于已请求自动递增编号的次数以及每个请求授予多少编号。

  • REF_COUNT

当此计数器达到零时,可以从 table 缓存中逐出 table 元数据。

Example

mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_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

Notes

  • 该 table 主要用于 maven 级的性能监控,或者在为 MySQL 开发与性能相关的扩展时很有用。

  • 您必须具有PROCESS特权才能查询此 table。

  • 使用INFORMATION_SCHEMA COLUMNStable 或SHOW COLUMNS语句查看有关此 table 列的其他信息,包括数据类型和默认值。