# 26.4.26 信息_SCHEMA INNODB_表统计视图

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

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

表统计信息仅更新删除要么更新修改索引列的操作。仅修改非索引列的操作不会更新统计信息。

分析表清除表统计信息并设置STATS_INITIALIZED列到未初始化.下次访问该表时会再次收集统计信息。

有关相关使用信息和示例,请参阅第 15.15.3 节,“InnoDB 信息_SCHEMA 模式对象表”.

INNODB_TABLESTATS表有这些列:

  • TABLE_ID

    表示可获取统计信息的表的标识符;相同的值INNODB_TABLES.TABLE_ID.

  • 姓名

    表的名称;相同的值INNODB_TABLES.NAME.

  • STATS_INITIALIZED

    值为初始化如果已经收集了统计信息,未初始化如果不。

  • NUM_ROWS

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

  • CLUST_INDEX_SIZE

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

  • OTHER_INDEX_SIZE

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

  • MODIFIED_COUNTER

    DML操作修改的行数,如插入,更新,删除,以及外键的级联操作。每次重新计算表统计信息时都会重置此列

  • 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 开发与性能相关的扩展时。

  • 你必须拥有过程查询此表的权限。

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