13.7.5.36 SHOW TABLE STATUS 语句
SHOW TABLE STATUS
[{FROM | IN} db_name]
[LIKE 'pattern' | WHERE expr]
显示 table 格状态的工作方式类似于SHOW TABLES,但提供了大量有关每个非TEMPORARY
table 的信息。您也可以使用mysqlshow-状态 db_name命令获得此列 table。 LIKE子句(如果存在)指示要匹配的 table 名。可以提供WHERE
子句以使用更一般的条件选择行,如第 24.35 节,“ SHOW 语句的扩展”中所述。
该语句还显示有关视图的信息。
显示 table 格状态输出包含以下列:
Name
table 的名称。
Engine
table 的存储引擎。参见第 14 章,InnoDB 存储引擎和第 15 章,备用存储引擎。
对于分区 table,Engine
显示所有分区使用的存储引擎的名称。
Version
table 的.frm
文件的版本号。
Row_format
行存储格式(Fixed
,Dynamic
,Compressed
,Redundant
,Compact
)。对于MyISAM
个 table,Dynamic
对应于myisamchk -dvv报告为Packed
。 InnoDB
table 格式在使用Antelope
文件格式时为Redundant
或Compact
,在使用Barracuda
文件格式时为Compressed
或Dynamic
。
Rows
行数。某些存储引擎(例如MyISAM
)存储准确的计数。对于其他存储引擎,例如InnoDB
,此值是一个近似值,可能与实际值相差 40%至 50%。在这种情况下,请使用SELECT COUNT(*)
获得准确的计数。
INFORMATION_SCHEMA
个 table 的Rows
值为NULL
。
对于InnoDBtable,行数只是 SQL 优化中使用的粗略估计。 (如果InnoDBtable 已分区,则也是如此。)
Avg_row_length
平均行长。
有关相关信息,请参阅本节末尾的 Comments。
Data_length
对于MyISAM
,Data_length
是数据文件的长度,以字节为单位。
对于InnoDB
,Data_length
是为聚 Cluster 索引分配的大约空间量(以字节为单位)。具体来说,它是聚 Cluster 索引大小(以页为单位)乘以InnoDB
页面大小。
有关其他存储引擎的信息,请参阅本节末尾的 Comments。
Max_data_length
对于MyISAM
,Max_data_length
是数据文件的最大长度。给定使用的数据指针大小,这是可以存储在 table 中的数据字节总数。
InnoDB
未使用。
有关其他存储引擎的信息,请参阅本节末尾的 Comments。
Index_length
对于MyISAM
,Index_length
是索引文件的长度,以字节为单位。
对于InnoDB
,Index_length
是分配给非聚集索引的大约空间量(以字节为单位)。具体来说,它是非聚集索引大小(以页为单位)的总和乘以InnoDB
页面大小。
有关其他存储引擎的信息,请参阅本节末尾的 Comments。
Data_free
已分配但未使用的字节数。
InnoDB
个 table 报告该 table 所属的 table 空间的可用空间。对于位于共享 table 空间中的 table,这是共享 table 空间的可用空间。如果使用多个 table 空间,并且该 table 具有其自己的 table 空间,则可用空间仅用于该 table。可用空间是指完全可用范围中的字节数减去安全裕量。即使可用空间显示为 0,只要不需要分配新的盘区,也可以插入行。
对于 NDB 群集,Data_free
显示磁盘上为磁盘数据 table 或磁盘上的碎片分配但未使用的空间。 (内存数据资源使用情况由Data_length
列报告.)
对于分区 table,此值仅是估计值,可能不是绝对正确。在这种情况下,获取此信息的一种更准确的方法是查询INFORMATION_SCHEMA
PARTITIONStable,如本示例所示:
SELECT SUM(DATA_FREE)
FROM INFORMATION_SCHEMA.PARTITIONS
WHERE TABLE_SCHEMA = 'mydb'
AND TABLE_NAME = 'mytable';
有关更多信息,请参见第 24.16 节“ INFORMATION_SCHEMA PARTITIONStable”。
Auto_increment
下一个AUTO_INCREMENT
值。
Create_time
创建 table 的时间。
Update_time
数据文件的最后更新时间。对于某些存储引擎,此值为NULL
。例如,InnoDB
在其system tablespace中存储了多个 table,并且数据文件时间戳不适用。即使在每个InnoDB
table 位于单独的.ibd
文件中的file-per-table模式下,change buffering也会延迟对数据文件的写入,因此文件修改时间与上一次插入,更新或删除的时间不同。对于MyISAM
,使用数据文件时间戳;但是,在 Windows 上,时间戳不会通过更新进行更新,因此该值不准确。
Update_time
显示在未分区的InnoDB
table 上执行的最后UPDATE,INSERT或DELETE的时间戳值。对于 MVCC,时间戳记值反映了COMMIT时间,该时间被视为最后更新时间。重新启动服务器或从InnoDB
数据字典高速缓存中逐出 table 时,时间戳记不会保留。
Update_time
列还显示分区InnoDB
table 的此信息。
Check_time
上次检查 table 的时间。并非所有存储引擎这次都更新,在这种情况下,该值始终为NULL
。
对于已分区的InnoDB个 table,Check_time
始终为NULL
。
Collation
该 table 的默认排序规则。输出未显式列出 table 默认字符集,但排序规则名称以字符集名称开头。
Checksum
实时校验和值(如果有)。
Create_options
与CREATE TABLE一起使用的其他选项。
Create_options
显示partitioned
table 示分区 table。
Create_options
显示创建或更改每 table 文件 table 空间时指定的ENCRYPTION
选项。
创建禁用了strict mode的 table 时,如果不支持指定的行格式,则使用存储引擎的默认行格式。table 的实际行格式在Row_format
列中报告。 Create_options
显示CREATE TABLE语句中指定的行格式。
更改 table 的存储引擎时,不适用于新存储引擎的 table 选项将保留在 table 定义中,以便在必要时将具有其先前定义的选项的 table 恢复到原始存储引擎。 Create_options
可能会显示保留的选项。
Comment
创建 table 时使用的 Comments(或有关 MySQL 为什么无法访问 table 信息的信息)。
Notes
-
对于
InnoDB
个 table,除了 table 保留的物理大小外,显示 table 格状态不提供准确的统计信息。行数只是 SQL 优化中使用的粗略估计。 -
对于NDBtable,此语句的输出显示
Avg_row_length
和Data_length
列的适当值,但不考虑BLOB列。 -
对于NDB个 table,
Data_length
仅包括存储在主存储器中的数据;Max_data_length
和Data_free
列适用于“磁盘数据”。 -
对于 NDB 群集磁盘数据 table,
Max_data_length
显示为磁盘数据 table 或片段的磁盘部分分配的空间。 (内存数据资源使用情况由Data_length
列报告.) -
对于
MEMORY
table,Data_length
,Max_data_length
和Index_length
值近似于实际分配的内存量。分配算法会大量保留内存,以减少分配操作的数量。 -
对于视图,由显示 table 格状态显示的所有列均为
NULL
,但Name
table 示视图名称,而Comment
table 示VIEW
。
table 信息也可从INFORMATION_SCHEMA
TABLEStable 获得。参见第 24.25 节“ INFORMATION_SCHEMA TABLEStable”。