Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  ...  /  The INFORMATION_SCHEMA TABLES Table

28.3.38 INFORMATION_SCHEMA 表

TABLES提供了数据库中的表信息。

TABLES中,表示表统计信息的列持有缓存值。系统变量information_schema_stats_expiry定义了缓存表统计信息过期前的时间间隔。默认为86400秒(24小时)。如果没有缓存统计信息或统计信息已过期,查询表统计信息列时将从存储引擎中检索统计信息。要在任何时候更新给定表的缓存值,请使用ANALYZE TABLE。要始终从存储引擎中检索最新的统计信息,请将information_schema_stats_expiry设置为0。更多信息请见第10.2.3节,“优化 INFORMATION_SCHEMA 查询”

Note

如果启用了innodb_read_only系统变量,ANALYZE TABLE可能会失败,因为它无法更新数据字典中的统计表,这些表使用InnoDB。即使操作更新了表本身(例如,如果是MyISAM表),也可能出现失败。要获得更新的分布统计信息,设置information_schema_stats_expiry=0

The TABLES table has these columns:

  • TABLE_ Catalog

    该表所属的目录名称。这一值始终为def

  • TABLE_SCHEMA

    该表所属的架构(数据库)名称。

  • TABLE_NAME

    该表名称。

  • TABLE_TYPE

    BASE TABLE为表,VIEW为视图,SYSTEM VIEWINFORMATION_SCHEMA表。

    TABLES 表不包含TEMPORARY表。

  • ENGINE

    表的存储引擎。请参阅第17章, InnoDB 存储引擎,和第18章, Alternative Storage Engines

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

  • VERSION

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

  • ROW_FORMAT

    行存储格式(FixedDynamicCompressedRedundantCompact)。对于MyISAM表,Dynamic对应于myisamchk -dvv报告的Packed

  • TABLE_ROWS

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

    TABLE_ROWSINFORMATION_SCHEMA表格返回NULL

    对于InnoDB表格,行计数值仅是一个用于SQL优化的粗略估算。 (这也适用于InnoDB表格被分区的情况。)

  • 平均行长。

  • DATA_LENGTH

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

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

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

  • 对于MyISAMMAX_ DATA_LENGTH是数据文件的最大长度。这是根据使用的数据指针大小计算的总字节数。

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

  • INDEX_LENGTH

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

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

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

  • DATA__FREE

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

    InnoDB表报告所属表空间的空闲空间。如果您使用多个表空间且该表有其自己的表空间,则空闲空间仅适用于该表。空闲空间表示完全免费的extent数量减去安全缓冲区,即使显示为0,也可能可以插入行,只要不需要分配新的extent。

    对于NDB集群,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节,“The INFORMATION_ SCHEMA PARTITIONS Table”

  • AUTO_INCREMENT

    下一个AUTO_INCREMENT值。

  • CREATE_TIME

    表创建时间。

  • UPDATE_TIME

    表最后更新时间。对于一些存储引擎,这个值为NULL。即使在文件-每张表模式下,每个InnoDB表都在单独的.ibd文件中,但是更改缓冲可以延迟写入到数据文件,因此文件修改时间不同于最后一次插入、更新或删除的时间。对于MyISAM,使用数据文件时间戳;然而,在 Windows 上,时间戳不由更新操作更新,所以值不准确。

    UPDATE_时间 显示了最后一次对 InnoDB 表进行UPDATEINSERTDELETE 的时间戳值。对于MVCC,时间戳值反映了COMMIT 时间,这被认为是最后一次更新时间。时间戳不在服务器重启或表从 InnoDB 数据字典缓存中 evicted 时被持久化。

  • CHECK_时间

    最后一次检查该表的时间。不是所有存储引擎都更新这个时间,如果是,则值总是 NULL

    对于分区的InnoDB 表,CHECK_时间 总是 NULL

  • TABLE_COLLATION

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

  • CHECKSUM

    当前的live checksum 值,如果有。

  • CREATE_OPTIONS

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

    CREATE_OPTIONS 显示分区表的partitioned

    CREATE_OPTIONS 显示在文件-per-表空间中创建的表的ENCRYPTION子句。如果表是加密的或指定的加密与架构加密不同,显示加密子句。对于在公共表空间中创建的表,不显示加密子句。要确定文件-per-表空间和公共表空间是否加密,可以查询INNODB_TABLESPACES中的ENCRYPTION列。

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

    当更改表的存储引擎时,新的存储引擎不适用的表选项将保留在表定义中,以便如果必要,可以将表 revert 到原来的存储引擎和之前定义的选项。CREATE_OPTIONS 列可能显示保留的选项。

  • TABLE_COMMENT

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

  • 对于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值近似实际分配的内存。分配算法预留大量内存以减少分配操作次数。

  • 对于视图,除了TABLES列大多数为0或NULL外,TABLE_NAME表示视图名称、CREATE_TIME表示创建时间和TABLE_COMMENT显示VIEW

表信息也可以从SHOW TABLE STATUSSHOW TABLES语句中获取。请参阅第15.7.7.37节,“SHOW TABLE STATUS 语句”第15.7.7.38节,“SHOW TABLES 语句”。以下语句等效:

SELECT
    TABLE_NAME, ENGINE, VERSION, ROW_FORMAT, TABLE_ROWS, AVG_ROW_LENGTH,
    DATA_LENGTH, MAX_DATA_LENGTH, INDEX_LENGTH, DATA_FREE, AUTO_INCREMENT,
    CREATE_TIME, UPDATE_TIME, CHECK_TIME, TABLE_COLLATION, CHECKSUM,
    CREATE_OPTIONS, TABLE_COMMENT
  FROM INFORMATION_SCHEMA.TABLES
  WHERE table_schema = 'db_name'
  [AND table_name LIKE 'wild']

SHOW TABLE STATUS
  FROM db_name
  [LIKE 'wild']

以下语句等效:

SELECT
  TABLE_NAME, TABLE_TYPE
  FROM INFORMATION_SCHEMA.TABLES
  WHERE table_schema = 'db_name'
  [AND table_name LIKE 'wild']

SHOW FULL TABLES
  FROM db_name
  [LIKE 'wild']