10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 本手册下载 从本手册中摘录

26.3.38 The INFORMATION_SCHEMA TABLES表

表提供有关数据库中表的信息。

表示表统计数据持有缓存值。的information_schema_stats_expiry系统变量定义缓存表统计到期前的时间段。默认值为86400秒(24小时)。如果没有缓存的统计信息或统计数据已过期,则在查询表统计列时从存储引擎中检索统计信息。要在给定表的任何时间更新缓存值,请使用分析表.若要始终直接从存储引擎检索最新统计信息,请设置information_schema_stats_expiry0.有关更多信息,请参见第8.2.3节“优化信息_Schema查询”

请注意

如果innodb_read_only系统变量已启用,分析表可能会失败,因为它无法更新数据字典中的统计表,它使用InnoDB.为分析表即使操作更新表本身也可能发生更新密钥分布,失败的操作(例如,如果是MyISAM表)。要获取更新的分布统计信息,请设置information_schema_stats_expiry = 0

Table有以下列:

  • table_catalog.

    表所属的目录的名称。这个值始终是def

  • TABLE_SCHEMA

    表所属的模式(数据库)的名称。

  • TABLE_NAME

    表名。

  • TABLE_TYPE

    基表对于一个表,看法为了一个视图,或系统视图Information_Schema.表格

    表没有列表临时表。

  • 引擎

    表的存储引擎。看到第15章,InnoDB存储引擎,第十六章,替代存储引擎

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

  • 版本

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

  • ROW_FORMAT

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

  • table_rows.

    行的数量。一些存储引擎,如MyISAM,储存准确的计数。对于其他存储引擎,例如InnoDB,此值是近似值,与实际值的差异可能高达40%至50%。在这种情况下,使用选择count(*)获得准确的计数。

    table_rows.Information_Schema.表。

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

  • AVG_ROW_LENGTH

    平均行长。

  • DATA_LENGTH

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

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

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

  • MAX_DATA_LENGTH

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

    未使用InnoDB

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

  • index_length.

    MyISAMindex_length.索引文件的长度,以字节为单位。

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

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

  • DATA_FREE

    分配但未使用的字节数。

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

    对于NDB集群,DATA_FREE显示在磁盘上为磁盘数据表或磁盘碎片分配但未被其使用的空间。(内存中数据资源使用情况由DATA_LENGTH列)。

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

    从information_schema中选择sum (data_free)。分区WHERE TABLE_SCHEMA = 'mydb' AND TABLE_NAME = 'mytable';

    有关更多信息,请参见第26.3.21节“Information_schema Partitions表”

  • AUTO_INCREMENT

    下一个AUTO_INCREMENT价值。

  • CREATE_TIME

    创建表时。

  • 更新时间

    数据文件最后一次更新的时间。对于某些存储引擎,该值为.例如,InnoDB中存储多个表系统表空间数据文件时间戳不适用。即使有file-per-table模式与各自InnoDB单独的的.ibd文件,改变缓冲可以延迟对数据文件的写入,使文件修改时间不同于上次插入、更新或删除的时间。为MyISAM,使用数据文件的时间戳;但是,在Windows上,时间戳不是通过updates来更新的,所以该值是不准确的。

    更新时间显示最后一个的时间戳值更新,或删除执行InnoDB未分区的表格。对于MVCC,时间戳值反映了提交时间,该时间被认为是最后一次更新时间。当服务器重新启动或从表中逐出时,时间戳不会持久InnoDB数据字典缓存。

  • CHECK_TIME

    最后一次检查表的时间。不是所有的存储引擎都会更新,在这种情况下,这个值总是

    为分区InnoDB表,CHECK_TIME总是

  • table_collat​​ion.

    表默认排序规则。输出没有显式列出表的默认字符集,但是排序规则名以字符集名开头。

  • 校验和

    活校验和值(如果有的话)。

  • CREATE_OPTIONS

    附加选项用于创建表

    CREATE_OPTIONS表明分区用于分区表。

    在MySQL 8.0.16之前,CREATE_OPTIONS显示了加密子句为在每个表的文件表空间中创建的表指定。从MySQL 8.0.16开始,如果表被加密了,或者指定的加密与模式加密不同,它会显示针对每个表文件的表空间的加密子句。对于在一般表空间中创建的表,不显示加密子句。要识别加密的每个表文件和常规表空间,请查询innodb_tablespaces.加密柱子。

    创建表时严格模式禁用后,如果不支持指定的行格式,则使用存储引擎的默认行格式。控件中报告了表的实际行格式ROW_FORMAT柱子。CREATE_OPTIONS显示在中指定的行格式创建表陈述。

    当更改表的存储引擎时,表定义中保留不适用于新存储引擎的表选项,以便在必要时将表与之前定义的选项恢复到原始存储引擎。的CREATE_OPTIONS列可以显示保留的选项。

  • TABLE_COMMENT

    创建表时使用的注释(或关于为什么MySQL不能访问表信息的信息)。

笔记

  • NDB表的适当值时,此语句的输出显示AVG_ROW_LENGTHDATA_LENGTH列,除了斑点不考虑列。

  • NDB表,DATA_LENGTH仅包括存储在主存中的数据;的MAX_DATA_LENGTHDATA_FREE列应用于磁盘数据。

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

  • 内存表,DATA_LENGTHMAX_DATA_LENGTH,index_length.值近似于实际分配的内存量。分配算法大量预留内存,减少分配操作次数。

  • 对于观点来说,大多数列为0或除了TABLE_NAME表示视图名称,CREATE_TIME创建时间、和TABLE_COMMENT看法

表信息也可从中获取显示表状态显示表语句。看到第13.7.7.38节,“SHOW TABLE STATUS Statement”,第13.7.7.39节“显示表格声明”.以下语句是等价的:

选择table_name,引擎,版本,row_format,table_rows,avg_row_length,data_length,max_data_lengthdb_name.'和table_name LIKE '野生']显示表状态db_name.(像“野生']

以下语句是等价的:

Select table_name, table_type from information_schema。表table_schema = 'db_name.'和table_name LIKE '野生']显示完整的表db_name.(像“野生']