Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  SHOW TABLE STATUS Statement

15.7.7.40 显示表状态语句

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

显示表状态 works likes 显示表, but provides a lot of information about each non-临时 table. You can also get this list using the mysqlshow --status db_name command. The LIKE 子句,如果存在,指示要匹配的表名。The WHERE 子句可以用于使用更一般的条件选择行,如 第 28.8 节,“SHOW 语句扩展” 中所讨论的那样。

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

显示表状态 输出具有以下列:

  • 名称

    表的名称。

  • 引擎

    表的存储引擎。参见 第 17 章 InnoDB 存储引擎第 18 章 替代存储引擎

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

  • 版本

    该列未使用。在 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索引长度 是索引文件的长度,以字节为单位。

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

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

  • Data_free

    未使用的已分配字节数。

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

    对于 NDB Cluster,Data_free 显示磁盘上分配但未使用的 Disk Data 表或磁盘碎片的空间。(内存数据资源使用情况由 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

    下一个 AUTO_INCREMENT 值。

  • Create_time

    表创建的时间。

  • Update_time

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

    Update_time 显示最后一个 UPDATEINSERTDELETE 操作的时间戳值,对于未分区的 InnoDB 表。对于 MVCC,时间戳值反映了 COMMIT 时间,视为最后更新时间。时间戳在服务器重新启动或表从 InnoDB 数据字典缓存中被逐出时不会持久化。

  • Check_time

    表最后检查的时间。不所有存储引擎都更新该时间,在这种情况下,该值始终为 NULL

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

  • Collation

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

  • Checksum

    实时校验和值,如果有的话。

  • Create_options

    使用 CREATE TABLE 的额外选项。

    Create_options 显示 partitioned 对于分区表。

    创建选项 显示文件每个表空间的 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 Cluster 磁盘数据表,Max_data_length 显示磁盘数据表或碎片的分配空间。(内存数据资源使用情况由 Data_length 列报告。)

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

  • 对于视图,大多数 SHOW TABLE STATUS 显示的列都是 0 或 NULL,除了 Name 表示视图名称、Create_time 表示创建时间和 CommentVIEW

表信息也可以从 INFORMATION_SCHEMA TABLES 表中获取。请参阅 第 28.3.38 节,“INFORMATION_SCHEMA TABLES 表”