MySQL中SHOW TABLE STATUS的使用及说明

 更新时间:2023年10月12日 09:31:08   作者:不会程序的JAVA程序媛  
这篇文章主要介绍了MySQL中SHOW TABLE STATUS的使用及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

说明

该SQL输出提供了很多关于每个非临时表的信息。

您还可以使用mysqlshow --status db_name命令获取此列表。

如出现类似子句,指示要匹配的表名。

可以使用where子句使用更一般的条件来选择行,此语句还显示有关视图的信息。

语法格式

SHOW TABLE STATUS
    [{FROM | IN} db_name]
    [LIKE 'pattern' | WHERE expr]
-- 参数:[FROM db_name] 可选,表示查询哪个数据库下面的表信息。 
-- [LIKE 'pattern'] 可选,表示查询哪些具体的表名。    

输出信息及解释

  • Name

表名。

  • Engine

表的存储引擎。旧版本中,叫Type。

  • Version

表的版本号

  • Row_format

行存储格式(Fixed,Dynamic,Compressed,Redundant,Compact)。对于MyISAM表,动态对应于myisamchk报告打包的内容。

使用Antelope文件格式时,InnoDB表格式要么是Redundant的,要么是Compact的,要么使用Barracuda文件格式Compressed或Dynamic。

动态行的行长度可变,例如Varchar或Blob类型字段。固定行是指行长度不变,例如Char和Integer类型字段。Compressed的行则只在压缩表中存在

  • Rows

表中的行数。一些存储引擎,如MyISAM,存储精确计数。

对于其他存储引擎,如InnoDB,这个值是近似值,并且可能与实际值不同多达40%至50%。

在这种情况下,使用选择count(*)来获取精确计数。

  • 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表表示表所属的表空间的空闲空间。对于位于共享表空间中的表,这是共享表空间的空闲空间。如果您使用多个表空间,并且表有自己的表空间,那么唯一的空间仅为该表。

Data_free意味着字节数在完全自由范围内减去安全裕度。即使Data_free显示为0,只要不需要分配新的区段,就可能插入行。对于NDB集群,data_free显示磁盘上分配的磁盘数据表或磁盘上的磁盘数据表或片段所分配的空间。(Data_length列表示内存数据资源使用情况)。

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

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

下一个Auto_increment的值

  • Create_time

表的创建时间,分区表是NULL

  • Update_time

表的最近更新时间。对于某些存储引擎来说,此值为null。

例如,InnoDB在其系统表空间中存储多个表,并且数据文件时间戳不适用。

即使使用file-per-table模式与每个InnoDB表在单独的.ibd文件中,更改缓冲可以将写入延迟到数据文件,因此文件修改时间不同于上次插入、更新或删除时间。

对于MyISAM,使用了数据文件时间戳;但是,在windows上,时间戳不会更新,因此值是不准确的。分区表是NULL。

  • Check_time

表上次检查的时间。并非所有存储引擎都更新了这个时间,在这种情况下,值总是空的。

对于分区的InnoDB表,check_time始终为null。

使用 check table 或myisamchk工具检查表的最近时间

  • Collation

表的默认字符集和字符排序规则

  • Checksum

如果有的话,则会返回一个实际校验值。

  • Create_options

Create_options显示分区表的分区。

当创建strict模式禁用的表时,如果不支持指定行格式,则使用存储引擎的默认行格式。

表中的实际行格式是在row_format列中显示的。Create_options显示了在create表语句中指定的行格式。

更改表的存储引擎时,表定义中保留了不适用于新存储引擎的表选项,以便在必要时启用将表与先前定义的选项还原到原始存储引擎中。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列显示内存数据资源使用情况)。
  • 对于内存表来说,data_length、max_data_length和index_length值近似于实际分配内存的数量。分配算法保留内存大量减少分配操作的数量。
  • 对于视图,显示表状态显示的所有列都为null,除非该名称指示视图名称和注释表示视图。

翻译自MySQL官方手册

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • phpmyadmin显示MySQL数据表“使用中” 修复后依然无效的解决方法

    phpmyadmin显示MySQL数据表“使用中” 修复后依然无效的解决方法

    这篇文章主要介绍了phpmyadmin显示MySQL数据表“使用中” 修复后依然无效的解决方法,需要的朋友可以参考下
    2014-07-07
  • mysql update语句的用法详解

    mysql update语句的用法详解

    本文详细介绍了,mysql中update语句的用法,系统全面的学习下update更新语句的用法,有需要的朋友可以参考下
    2014-08-08
  • mysql密码忘记怎么办

    mysql密码忘记怎么办

    mysql密码忘记怎么办?卸载重装?这篇文章主要为大家详细介绍了不卸载也能重新设置密码的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02
  • mysql插入前判断数据是否存在的操作

    mysql插入前判断数据是否存在的操作

    这篇文章主要介绍了mysql插入前判断数据是否存在的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • 原来MySQL 数据类型也可以优化

    原来MySQL 数据类型也可以优化

    这篇文章主要介绍了原来MySQL 数据类型也可以优化,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下,希望对你的学习有所帮助
    2022-08-08
  • MySQL中隔离级别RC与RR的区别及说明

    MySQL中隔离级别RC与RR的区别及说明

    这篇文章主要介绍了MySQL中隔离级别RC与RR的区别及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • Mysql连接无效(invalid connection)问题及解决

    Mysql连接无效(invalid connection)问题及解决

    这篇文章主要介绍了Mysql连接无效(invalid connection)问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • Mysql中varchar类型一些需要注意的地方

    Mysql中varchar类型一些需要注意的地方

    这篇文章主要介绍了Mysql中varchar类型一些需要注意的地方,帮助大家更好的理解和学习MySQL,感兴趣的朋友可以了解下
    2021-01-01
  • 关于@NotNull注解失效的原因之一

    关于@NotNull注解失效的原因之一

    这篇文章主要介绍了关于@NotNull注解失效的原因之一,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • mybatis in语句不能大于1000的问题及解决

    mybatis in语句不能大于1000的问题及解决

    这篇文章主要介绍了mybatis in语句不能大于1000的问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11

最新评论