文档首页
MySQL 9.0 参考手册
相关文档 下载本手册

MySQL 9.0 参考手册  /  ...  /  INFORMATION_SCHEMA INNODB_TABLESTATS 视图

28.4.26 INFORMATION_SCHEMA INNODB_TABLESTATS 视图

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

如果自上次服务器重启后已打开 InnoDB 表且其未从表缓存中老化,则这些表将在此视图中表示。持久统计信息可用的表的表始终在此视图中表示。

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

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 操作修改的行数,例如 INSERTUPDATEDELETE,以及来自外键的级联操作。每次重新计算表统计信息时,都会重置此列。

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