MYSQL-查看表的基本信息存储大小和字符集语法(三十六)

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

SHOW TABLE STATUS的工作方式类似于SHOW TABLES,但提供了有关每个非临时表的大量信息。您还可以使用mysqlshow --status db_name命令获取此列表。LIKE子句(如果存在)指示要匹配的表名。WHERE子句可以用于使用更一般的条件选择行,如第24.8节“SHOW语句的扩展”所述。

mysql> show table status from world like 'city' \G
*************************** 1. row ***************************
           Name: city
         Engine: InnoDB
        Version: 10
     Row_format: Dynamic
           Rows: 0
 Avg_row_length: 0
    Data_length: 16384
Max_data_length: 0
   Index_length: 16384
      Data_free: 0
 Auto_increment: 1
    Create_time: 2024-09-21 19:21:47
    Update_time: NULL
     Check_time: NULL
      Collation: utf8_bin
       Checksum: NULL
 Create_options:
        Comment:
1 row in set (0.00 sec)

mysql>

此语句还显示有关视图的信息。

SHOW TABLE STATUS 输出具有的列:

  • Name

    表的名称。

  • Engine

    表的存储引擎。请参阅第14章“InnoDB存储引擎”和第15章“替代存储引擎”。

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

  • Version

    表的.frm文件的版本号。

  • Row_format

    行存储格式 (Fixed(固定),Dynamic(动态),Compressed(压缩),Redundant(冗余),Compact(紧凑) )。Dynamic对应于myisamchk -dvv 报告为打包的内容。使用Antelope文件格式时,InnoDB表格式为冗余或紧凑,使用Barracuda文件格式时为压缩或动态。

  • Rows

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

    对于INFORMATION_SCHEMA表,Rows值为NULL。

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

  • 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表报告表所属表空间的可用空间。对于位于共享表空间中的表,这是共享表空间的可用空间。如果您使用多个表空间,并且表有自己的表空间,则可用空间仅用于该表。可用空间是指完全可用范围中的字节数减去安全裕度。即使可用空间显示为0,只要不需要分配新的扩展数据块,就可以插入行。

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

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

    SELECT SUM(DATA_FREE)
        FROM  INFORMATION_SCHEMA.PARTITIONS
        WHERE TABLE_SCHEMA = 'mydb'
        AND   TABLE_NAME   = 'mytable';
    

    有关更多信息,请参见第 24.3.16 节“INFORMATION_SCHEMA PARTITIONS 表”。

  • Auto_increment

    下一个AUTO_INCREMENT值。

  • Create_time

    创建表的时间。

  • Update_time

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

    Update_time显示对未分区的InnoDB表执行的最后一次Update、INSERT或DELETE的时间戳值。对于MVCC,时间戳值反映了COMMIT时间,即最后一次更新时间。当服务器重新启动或表从InnoDB数据字典缓存中移出时,时间戳不会持久化。

    Update_time列还显示了分区InnoDB表的此信息。

  • Check_time

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

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

  • Collation

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

  • Checksum

    实时校验和值(如果有)。

  • Create_options

    CREATE TABLE使用的额外选项。

    Create_options显示分区表的分区。

    Create_options显示了在为每个表空间创建或更改文件时指定的ENCRYPTION选项。

    在创建禁用严格模式的表时,如果不支持指定的行格式,则使用存储引擎的默认行格式。表的实际行格式在row_format列中报告。Create_options显示在Create TABLE语句中指定的行格式。

    更改表的存储引擎时,不适用于新存储引擎的表选项将保留在表定义中,以便在必要时将表及其先前定义的选项还原为原始存储引擎。Create_options可能会显示保留的选项。

  • Comment

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

笔记

  • 对于InnoDB表,除了表保留的物理大小外,SHOW TABLE STATUS不会给出准确的统计数据。行数只是SQL优化中使用的粗略估计。
  • 对于NDB表,此语句的输出显示了Avg_row_length和Data_length列的适当值,但不考虑BLOB列。
  • 对于NDB表,Data_length仅包括存储在主存储器中的数据;Max_data_length和data_free列适用于磁盘数据。
  • 对于NDB群集磁盘数据表,Max_Data_length显示为磁盘数据表或片段的磁盘部分分配的空间。(内存中的数据资源使用情况由data_length列报告。)
  • 对于MEMORY表,Data_length、Max_Data_length和Index_length值近似于实际分配的内存量。分配算法保留大量内存以减少分配操作的数量。
  • 对于视图,SHOW TABLE STATUS显示的所有列都为NULL,除了Name表示视图名称,Comment表示view。

表信息也可从information_SCHEMA TABLES表中获得。参见第 24.3.25 节“INFORMATION_SCHEMA TABLES 表”。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值