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官方手册

总结

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

相关文章

  • MySql使用mysqldump 导入与导出方法总结

    MySql使用mysqldump 导入与导出方法总结

    这篇文章主要介绍了MySql使用mysqldump 导入与导出方法总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • 源码编译安装MySQL8.0.20的详细教程

    源码编译安装MySQL8.0.20的详细教程

    这篇文章主要介绍了源码编译安装MySQL8.0.20的详细教程,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • Linux下mysql 5.7 部署及远程访问配置

    Linux下mysql 5.7 部署及远程访问配置

    这篇文章主要为大家详细介绍了Linux下mysql 5.7 部署及远程访问的配置方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-09
  • MySQL通配符模糊搜索匹配的使用关键技巧

    MySQL通配符模糊搜索匹配的使用关键技巧

    这篇文章主要为大家介绍了MySQL通配符模糊搜索匹配的使用关键技巧详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • MySQL InnoDB ReplicaSet(副本集)简单介绍

    MySQL InnoDB ReplicaSet(副本集)简单介绍

    这篇文章主要介绍了MySQL InnoDB ReplicaSet(副本集)的相关资料,帮助大家更好的理解和学习使用MySQL,感兴趣的朋友可以了解下
    2021-04-04
  • MySQL中的数据加密解密安全技术教程

    MySQL中的数据加密解密安全技术教程

    在数据库应用程序中,数据的安全性是至关重要的,MySQL作为一种常用的关系型数据库管理系统,也提供了一些数据加密和解密的技巧来保护敏感数据的安全性,为了保护敏感数据免受未经授权的访问,我们可以使用加密和解密技术
    2024-01-01
  • MySQL中FOR UPDATE的具体用法

    MySQL中FOR UPDATE的具体用法

    本文主要介绍了MySQL中FOR UPDATE的具体用法,它在事务中起到了锁定数据行的关键作用,确保了数据的一致性和可靠性,下面就来具体的介绍一下应用场景等,感兴趣的可以了解一下
    2024-02-02
  • myeclipse中连接mysql数据库示例代码

    myeclipse中连接mysql数据库示例代码

    这篇文章主要为大家详细介绍了MyEclipse连接MySQL数据库图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • mysql 报错 incompatible with sql_mode=only_full_group_by解决

    mysql 报错 incompatible with sql_mode=only

    这篇文章主要为大家介绍了mysql 报错 incompatible with sql_mode=only_full_group_by解决方法,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • 在MySQL中使用子查询和标量子查询的基本操作教程

    在MySQL中使用子查询和标量子查询的基本操作教程

    这篇文章主要介绍了在MySQL中使用子查询和标量子查询的基本操作教程,子查询的使用时MySQL入门学习中的基础知识,需要的朋友可以参考下
    2015-12-12

最新评论