Documentation Home
MySQL 8.0 参考手册  / 第 26 章 INFORMATION_SCHEMA 表  / 26.4 INFORMATION_SCHEMA InnoDB 表  /  24.4.25 INFORMATION_SCHEMA INNODB_SYS_TABLESTATS 视图

24.4.25 INFORMATION_SCHEMA INNODB_SYS_TABLESTATS 视图

INNODB_SYS_TABLESTATS表提供有关表的低级状态信息的 InnoDB视图。MySQL 优化器使用此数据来计算查询 InnoDB表时使用哪个索引。此信息来自内存中的数据结构,而不是存储在磁盘上的数据。没有对应的内部InnoDB系统表。

InnoDB如果表自上次服务器重启后已打开且未超出表缓存,则表将显示在此视图中。永久统计信息可用的表始终显示在此视图中。

仅针对修改索引列的操作DELETE或 操作 更新表统计信息 。UPDATE仅修改非索引列的操作不会更新统计信息。

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

有关相关的使用信息和示例,请参阅 第 14.16.3 节,“InnoDB INFORMATION_SCHEMA 系统表”

INNODB_SYS_TABLESTATS表有以下列:

  • TABLE_ID

    表示可获得统计信息的表的标识符;与 相同的值 INNODB_SYS_TABLES.TABLE_ID

  • NAME

    表名;与 相同的值 INNODB_SYS_TABLES.NAME

  • STATS_INITIALIZED

    该值是Initialized统计信息是否已经收集,Uninitialized如果没有。

  • NUM_ROWS

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

  • CLUST_INDEX_SIZE

    磁盘上存储聚簇索引的页数,该索引InnoDB按主键顺序保存表数据。如果尚未为该表收集统计信息,则该值可能为空。

  • OTHER_INDEX_SIZE

    磁盘上存储表的所有二级索引的页数。如果尚未为该表收集统计信息,则该值可能为空。

  • MODIFIED_COUNTER

    由 DML 操作修改的行数,例如 INSERTUPDATEDELETE以及来自外键的级联操作。每次重新计算表统计信息时都会重置此列

  • AUTOINC

    为任何基于自动增量的操作发出的下一个数字。值更改的速率AUTOINC 取决于请求自动递增数字的次数以及每次请求授予的数字数量。

  • REF_COUNT

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

例子

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

笔记

  • 该表主要用于专家级性能监控,或在为 MySQL 开发与性能相关的扩展时使用。

  • 您必须具有PROCESS 查询此表的权限。

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