文档首页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  ...  /  SHOW TABLE STATUS 语句

15.7.7.37 SHOW TABLE STATUS 语句

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

SHOW TABLE STATUS 的工作方式类似于 SHOW TABLES,但它提供了关于每个非 TEMPORARY 表的大量信息。您还可以使用 mysqlshow --status db_name 命令获取此列表。 LIKE 子句(如果存在)指示要匹配的表名。可以给出 WHERE 子句以使用更一般的条件选择行,如 第 28.8 节“SHOW 语句的扩展” 中所述。

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

SHOW TABLE STATUS 输出包含以下列:

  • 名称

    表的名称。

  • 引擎

    表的存储引擎。请参阅 第 17 章“InnoDB 存储引擎”第 18 章“备用存储引擎”

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

  • 版本

    此列未使用。由于 MySQL 8.0 中删除了 .frm 文件,此列现在报告硬编码值 10,这是 MySQL 5.7 中使用的最后一个 .frm 文件版本。

  • 行格式

    行存储格式(固定动态压缩冗余紧凑)。对于 MyISAM 表,动态 对应于 myisamchk -dvv 报告为 打包 的内容。

  • 行数

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

    INFORMATION_SCHEMA 表的 行数 值为 NULL

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

  • 平均行长度

    平均行长度。

  • 数据长度

    对于 MyISAM数据长度 是数据文件的长度(以字节为单位)。

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

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

  • 最大数据长度

    对于 MyISAM最大数据长度 是数据文件的最大长度。这是考虑到所使用的数据指针大小,可以存储在表中的数据的总字节数。

    InnoDB 未使用。

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

  • 索引长度

    对于 MyISAM索引长度 是索引文件的长度(以字节为单位)。

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

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

  • 可用数据空间

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

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

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

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

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

    有关更多信息,请参阅 第 28.3.21 节“INFORMATION_SCHEMA PARTITIONS 表”

  • 自动递增

    下一个 AUTO_INCREMENT 值。

  • 创建时间

    创建表的时间。

  • 更新时间

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

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

  • 检查时间

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

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

  • 排序规则

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

  • 校验和

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

  • 创建选项

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

    对于已分区表,Create_options 显示 partitioned

    如果表已加密或指定的加密与架构加密不同,则 Create_options 会为每个表一个文件表空间显示 ENCRYPTION 子句。对于在通用表空间中创建的表,不会显示加密子句。要标识已加密的每个表一个文件和通用表空间,请查询 INNODB_TABLESPACES ENCRYPTION 列。

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

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

  • 注释

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

备注
  • 对于 InnoDB 表,SHOW TABLE STATUS 不会提供准确的统计信息,除了表保留的物理大小。行计数只是 SQL 优化中使用的粗略估计值。

  • 对于 NDB 表,此语句的输出显示 Avg_row_lengthData_length 列的适当值,但 BLOB 列除外。

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

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

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

  • 对于视图,SHOW TABLE STATUS 显示的大多数列都是 0 或 NULL,但 Name 指示视图名称,Create_time 指示创建时间,Comment 指示 VIEW

INFORMATION_SCHEMA TABLES 表中也提供了表信息。请参阅 第 28.3.38 节“INFORMATION_SCHEMA TABLES 表”