Documentation Home

13.7.5.37 显示表状态语句

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

SHOW TABLE STATUS作品喜欢 SHOW TABLES,但提供了很多关于每个非TEMPORARY 表的信息。您还可以使用mysqlshow --statusdb_name命令获取此列表。该LIKE子句(如果存在)指示要匹配的表名。该 WHERE子句可以使用更一般的条件来选择行,如 第 21.9 节“SHOW 语句的扩展”中所讨论的。

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

SHOW TABLE STATUS输出有以下列:

  • Name

    表的名称。

  • Engine

    表的存储引擎。请参阅 第 14 章,InnoDB 存储引擎第 15 章,替代存储引擎

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

  • Version

    .frm 表文件 的版本号。

  • Row_format

    行存储格式 ( Fixed, Dynamic, Compressed, Redundant, Compact)。对于MyISAM表, Dynamic对应于 myisamchk -dvv报告的 内容PackedInnoDB表格格式要么是要么RedundantCompact使用 Antelope文件格式时,要么 Compressed要么Dynamic 当使用Barracuda文件格式时。

  • Rows

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

    RowsNULL 适用于INFORMATION_SCHEMA表格。

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

  • Avg_row_length

    平均行长度。

    有关信息,请参阅本节末尾的注释。

  • Data_length

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

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

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

  • Max_data_length

    对于MyISAM, Max_data_length是数据文件的最大长度。在给定所用数据指针大小的情况下,这是可以存储在表中的数据的总字节数。

    未用于InnoDB

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

  • Index_length

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

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

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

  • Data_free

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

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

    对于 NDB Cluster,Data_free显示磁盘上为磁盘数据表或磁盘片段分配但未使用的空间。(内存中数据资源使用情况按Data_length列报告。)

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

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

    有关详细信息,请参阅 第 21.3.14 节,“INFORMATION_SCHEMA PARTITIONS 表”

  • Auto_increment

    下一个AUTO_INCREMENT值。

  • Create_time

    创建表时。

    在 MySQL 5.6.25 之前,对于分区 InnoDB表,该 Create_time列显示 NULL. 该列显示了 MySQL 5.6.25 及更高版本中此类表的正确建表时间。(漏洞 #17299181,漏洞 #69990)

  • Update_time

    上次更新数据文件的时间。对于某些存储引擎,此值为NULL. 例如, 在其系统表空间InnoDB中存储多个表, 并且数据文件时间戳不适用。即使使用 file-per-table 模式,每个表都在一个单独的 文件中, 更改缓冲也会延迟写入数据文件,因此文件修改时间与上次插入、更新或删除的时间不同。为了 InnoDB.ibdMyISAM,使用数据文件时间戳;但是,在 Windows 上,时间戳不会被更新更新,因此该值不准确。

    对于分区InnoDB表, Update_time总是 NULL.

  • Check_time

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

    对于分区InnoDB表, Check_time总是 NULL.

  • Collation

    表默认排序规则。输出没有明确列出表默认字符集,但排序规则名称以字符集名称开头。

  • Checksum

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

  • Create_options

    与 一起使用的额外选项CREATE TABLE

    Create_options显示 partitioned分区表。

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

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

  • Comment

    创建表时使用的注释(或有关 MySQL 无法访问表信息的原因的信息)。

笔记
  • 对于InnoDB表, SHOW TABLE STATUS除了表保留的物理大小外,没有给出准确的统计数据。行数只是 SQL 优化中使用的粗略估计。

  • 对于NDB表,此语句的输出显示 Avg_row_length和 列的适当值,但不考虑列 Data_length除外。BLOB

  • 对于NDB表格, Data_length仅包括存储在主内存中的数据;和Max_data_lengthData_free适用于磁盘数据。

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

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

  • 对于视图,显示的所有列 SHOW TABLE STATUS都是 NULL除了Name 指示视图名称和CommentVIEW

表格信息也可从 INFORMATION_SCHEMA TABLES表格中获得。请参阅 第 21.3.23 节,“INFORMATION_SCHEMA 表”