13.7.5.36 SHOW TABLE STATUS 语句

SHOW TABLE STATUS
    [{FROM | IN} db_name]
    [LIKE 'pattern' | WHERE expr]

显示 table 格状态的工作方式类似于SHOW TABLES,但提供了大量有关每个非TEMPORARYtable 的信息。您也可以使用mysqlshow-状态 db_name命令获得此列 table。 LIKE子句(如果存在)指示要匹配的 table 名。可以提供WHERE子句以使用更一般的条件选择行,如第 24.35 节,“ SHOW 语句的扩展”中所述。

该语句还显示有关视图的信息。

显示 table 格状态输出包含以下列:

  • Name

table 的名称。

  • Engine

table 的存储引擎。参见第 14 章,InnoDB 存储引擎第 15 章,备用存储引擎

对于分区 table,Engine显示所有分区使用的存储引擎的名称。

  • Version

table 的.frm文件的版本号。

  • Row_format

行存储格式(FixedDynamicCompressedRedundantCompact)。对于MyISAM个 table,Dynamic对应于myisamchk -dvv报告为PackedInnoDBtable 格式在使用Antelope文件格式时为RedundantCompact,在使用Barracuda文件格式时为CompressedDynamic

  • Rows

行数。某些存储引擎(例如MyISAM)存储准确的计数。对于其他存储引擎,例如InnoDB,此值是一个近似值,可能与实际值相差 40%至 50%。在这种情况下,请使用SELECT COUNT(*)获得准确的计数。

INFORMATION_SCHEMA个 table 的Rows值为NULL

对于InnoDBtable,行数只是 SQL 优化中使用的粗略估计。 (如果InnoDBtable 已分区,则也是如此。)

  • Avg_row_length

平均行长。

有关相关信息,请参阅本节末尾的 Comments。

  • Data_length

对于MyISAMData_length是数据文件的长度,以字节为单位。

对于InnoDBData_length是为聚 Cluster 索引分配的大约空间量(以字节为单位)。具体来说,它是聚 Cluster 索引大小(以页为单位)乘以InnoDB页面大小。

有关其他存储引擎的信息,请参阅本节末尾的 Comments。

  • Max_data_length

对于MyISAMMax_data_length是数据文件的最大长度。给定使用的数据指针大小,这是可以存储在 table 中的数据字节总数。

InnoDB未使用。

有关其他存储引擎的信息,请参阅本节末尾的 Comments。

  • Index_length

对于MyISAMIndex_length是索引文件的长度,以字节为单位。

对于InnoDBIndex_length是分配给非聚集索引的大约空间量(以字节为单位)。具体来说,它是非聚集索引大小(以页为单位)的总和乘以InnoDB页面大小。

有关其他存储引擎的信息,请参阅本节末尾的 Comments。

  • Data_free

已分配但未使用的字节数。

InnoDB个 table 报告该 table 所属的 table 空间的可用空间。对于位于共享 table 空间中的 table,这是共享 table 空间的可用空间。如果使用多个 table 空间,并且该 table 具有其自己的 table 空间,则可用空间仅用于该 table。可用空间是指完全可用范围中的字节数减去安全裕量。即使可用空间显示为 0,只要不需要分配新的盘区,也可以插入行。

对于 NDB 群集,Data_free显示磁盘上为磁盘数据 table 或磁盘上的碎片分配但未使用的空间。 (内存数据资源使用情况由Data_length列报告.)

对于分区 table,此值仅是估计值,可能不是绝对正确。在这种情况下,获取此信息的一种更准确的方法是查询INFORMATION_SCHEMA PARTITIONStable,如本示例所示:

SELECT SUM(DATA_FREE)
    FROM  INFORMATION_SCHEMA.PARTITIONS
    WHERE TABLE_SCHEMA = 'mydb'
    AND   TABLE_NAME   = 'mytable';

有关更多信息,请参见第 24.16 节“ INFORMATION_SCHEMA PARTITIONStable”

  • Auto_increment

下一个AUTO_INCREMENT值。

  • Create_time

创建 table 的时间。

  • Update_time

数据文件的最后更新时间。对于某些存储引擎,此值为NULL。例如,InnoDB在其system tablespace中存储了多个 table,并且数据文件时间戳不适用。即使在每个InnoDBtable 位于单独的.ibd文件中的file-per-table模式下,change buffering也会延迟对数据文件的写入,因此文件修改时间与上一次插入,更新或删除的时间不同。对于MyISAM,使用数据文件时间戳;但是,在 Windows 上,时间戳不会通过更新进行更新,因此该值不准确。

Update_time显示在未分区的InnoDBtable 上执行的最后UPDATEINSERTDELETE的时间戳值。对于 MVCC,时间戳记值反映了COMMIT时间,该时间被视为最后更新时间。重新启动服务器或从InnoDB数据字典高速缓存中逐出 table 时,时间戳记不会保留。

Update_time列还显示分区InnoDBtable 的此信息。

  • Check_time

上次检查 table 的时间。并非所有存储引擎这次都更新,在这种情况下,该值始终为NULL

对于已分区的InnoDB个 table,Check_time始终为NULL

  • Collation

该 table 的默认排序规则。输出未显式列出 table 默认字符集,但排序规则名称以字符集名称开头。

  • Checksum

实时校验和值(如果有)。

  • Create_options

CREATE TABLE一起使用的其他选项。

Create_options显示partitionedtable 示分区 table。

Create_options显示创建或更改每 table 文件 table 空间时指定的ENCRYPTION选项。

创建禁用了strict mode的 table 时,如果不支持指定的行格式,则使用存储引擎的默认行格式。table 的实际行格式在Row_format列中报告。 Create_options显示CREATE TABLE语句中指定的行格式。

更改 table 的存储引擎时,不适用于新存储引擎的 table 选项将保留在 table 定义中,以便在必要时将具有其先前定义的选项的 table 恢复到原始存储引擎。 Create_options可能会显示保留的选项。

  • Comment

创建 table 时使用的 Comments(或有关 MySQL 为什么无法访问 table 信息的信息)。

Notes
  • 对于InnoDB个 table,除了 table 保留的物理大小外,显示 table 格状态不提供准确的统计信息。行数只是 SQL 优化中使用的粗略估计。

  • 对于NDBtable,此语句的输出显示Avg_row_lengthData_length列的适当值,但不考虑BLOB列。

  • 对于NDB个 table,Data_length仅包括存储在主存储器中的数据; Max_data_lengthData_free列适用于“磁盘数据”。

  • 对于 NDB 群集磁盘数据 table,Max_data_length显示为磁盘数据 table 或片段的磁盘部分分配的空间。 (内存数据资源使用情况由Data_length列报告.)

  • 对于MEMORYtable,Data_lengthMax_data_lengthIndex_length值近似于实际分配的内存量。分配算法会大量保留内存,以减少分配操作的数量。

  • 对于视图,由显示 table 格状态显示的所有列均为NULL,但Nametable 示视图名称,而Commenttable 示VIEW

table 信息也可从INFORMATION_SCHEMA TABLEStable 获得。参见第 24.25 节“ INFORMATION_SCHEMA TABLEStable”