SHOW TABLE STATUS
[{FROM | IN} db_name]
[LIKE 'pattern' | WHERE expr]
SHOW TABLE STATUS
作品喜欢
SHOW TABLES
,但提供了很多关于每个非TEMPORARY
表的信息。您还可以使用mysqlshow --statusdb_name
命令获取此列表。该LIKE
子句(如果存在)指示要匹配的表名。该
WHERE
子句可以使用更一般的条件来选择行,如
第 26.8 节,“SHOW 语句的扩展”中所讨论的。
此语句还显示有关视图的信息。
SHOW TABLE STATUS
输出有以下列:
Name
表的名称。
Engine
表的存储引擎。请参阅 第 15 章,InnoDB 存储引擎和 第 16 章,替代存储引擎。
对于分区表,
Engine
显示所有分区使用的存储引擎的名称。Version
此列未使用。随着
.frm
MySQL 8.0 中文件的删除,此列现在报告硬编码值10
,这是 MySQL 5.7 中使用的最后一个.frm
文件版本。Row_format
行存储格式 (
Fixed
,Dynamic
,Compressed
,Redundant
,Compact
)。对于MyISAM
表,Dynamic
对应于 myisamchk -dvv报告的 内容Packed
。Rows
行数。一些存储引擎(例如
MyISAM
)存储确切的计数。对于其他存储引擎,例如InnoDB
,该值是一个近似值,可能与实际值相差 40% 到 50%。在这种情况下,使用SELECT COUNT(*)
以获得准确的计数。该
Rows
值NULL
适用于INFORMATION_SCHEMA
表格。Avg_row_length
平均行长度。
Data_length
对于
MyISAM
,Data_length
是数据文件的长度,以字节为单位。对于
InnoDB
,Data_length
是为聚集索引分配的近似空间量,以字节为单位。具体来说,它是聚簇索引大小(以页为单位)乘以InnoDB
页面大小。有关其他存储引擎的信息,请参阅本节末尾的注释。
Max_data_length
对于
MyISAM
,Max_data_length
是数据文件的最大长度。在给定所用数据指针大小的情况下,这是可以存储在表中的数据的总字节数。未用于
InnoDB
。有关其他存储引擎的信息,请参阅本节末尾的注释。
Index_length
对于
MyISAM
,Index_length
是索引文件的长度,以字节为单位。对于
InnoDB
,Index_length
是为非聚集索引分配的近似空间量,以字节为单位。具体来说,它是非聚集索引大小的总和(以页为单位)乘以InnoDB
页面大小。有关其他存储引擎的信息,请参阅本节末尾的注释。
Data_free
已分配但未使用的字节数。
InnoDB
tables 报告表所属的表空间的可用空间。对于位于共享表空间中的表,这是共享表空间的可用空间。如果您使用多个表空间并且该表有自己的表空间,则可用空间仅供该表使用。空闲空间是指完全空闲区中的字节数减去安全余量。即使可用空间显示为 0,也可以插入行,只要不需要分配新的盘区。对于 NDB Cluster,
Data_free
显示磁盘上为磁盘数据表或磁盘片段分配但未使用的空间。(内存中数据资源使用情况按Data_length
列报告。)对于分区表,这个值只是一个估计值,可能不是绝对正确的。在这种情况下,获取此信息的更准确方法是查询
INFORMATION_SCHEMA
PARTITIONS
表,如本例所示:SELECT SUM(DATA_FREE) FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA = 'mydb' AND TABLE_NAME = 'mytable';
有关详细信息,请参阅 第 26.3.21 节,“INFORMATION_SCHEMA PARTITIONS 表”。
Auto_increment
下一个
AUTO_INCREMENT
值。Create_time
创建表时。
Update_time
上次更新数据文件的时间。对于某些存储引擎,此值为
NULL
. 例如, 在其系统表空间InnoDB
中存储多个表, 并且数据文件时间戳不适用。即使使用 file-per-table 模式,每个表都在一个单独的 文件中, 更改缓冲也会延迟写入数据文件,因此文件修改时间与上次插入、更新或删除的时间不同。为了InnoDB
.ibd
MyISAM
,使用数据文件时间戳;但是,在 Windows 上,时间戳不会被更新更新,因此该值不准确。Update_time
显示在未分区的表上最后一次UPDATE
、、INSERT
或DELETE
执行 的时间戳值。InnoDB
对于 MVCC,时间戳值反映了COMMIT
时间,这被认为是最后更新时间。InnoDB
当服务器重新启动或表从数据字典缓存 中逐出时,时间戳不会保留。Check_time
上次检查表格的时间。这次并非所有存储引擎都更新,在这种情况下,值始终为
NULL
。对于分区
InnoDB
表,Check_time
总是NULL
.Collation
表默认排序规则。输出没有明确列出表默认字符集,但排序规则名称以字符集名称开头。
Checksum
实时校验和值(如果有)。
Create_options
与 一起使用的额外选项
CREATE TABLE
。Create_options
显示partitioned
分区表。在 MySQL 8.0.16 之前,
Create_options
显示ENCRYPTION
为在 file-per-table 表空间中创建的表指定的子句。从 MySQL 8.0.16 开始,如果表已加密或指定的加密与模式加密不同,它会显示 file-per-table 表空间的加密子句。对于在一般表空间中创建的表,不显示加密子句。要识别加密的 file-per-table 和通用表空间,请查询该 列。INNODB_TABLESPACES
ENCRYPTION
在禁用严格模式的情况下 创建表时 ,如果不支持指定的行格式,则使用存储引擎的默认行格式。表的实际行格式在
Row_format
列中报告。Create_options
显示CREATE TABLE
语句中指定的行格式。当更改表的存储引擎时,不适用于新存储引擎的表选项将保留在表定义中,以便在必要时将表及其先前定义的选项恢复为原始存储引擎。
Create_options
可能会显示保留的选项。Comment
创建表时使用的注释(或有关 MySQL 无法访问表信息的原因的信息)。
笔记
对于
InnoDB
表,SHOW TABLE STATUS
除了表保留的物理大小外,没有给出准确的统计数据。行数只是 SQL 优化中使用的粗略估计。对于
NDB
表,此语句的输出显示Avg_row_length
和 列的适当值,但不考虑列Data_length
除外。BLOB
For
NDB
tables,Data_length
includes data stored in main memory only; theMax_data_length
andData_free
columns apply to Disk Data.For NDB Cluster Disk Data tables,
Max_data_length
shows the space allocated for the disk part of a Disk Data table or fragment. (In-memory data resource usage is reported by theData_length
column.)For
MEMORY
tables, theData_length
,Max_data_length
, andIndex_length
values approximate the actual amount of allocated memory. The allocation algorithm reserves memory in large amounts to reduce the number of allocation operations.对于视图,显示的大多数列
SHOW TABLE STATUS
都是 0 或NULL
除了Name
表示视图名称、Create_time
表示创建时间和Comment
表示VIEW
。
表格信息也可从
INFORMATION_SCHEMA
TABLES
表格中获得。请参阅
第 26.3.38 节,“INFORMATION_SCHEMA TABLES 表”。