
26.38 INFORMATION_SCHEMA TABLES 表
NDB 表:该表的 NDB Cluster 磁盘数据表: MEMORY 表: 视图:除了 与
发布日期:2021-05-08 00:27:33
浏览次数:30
分类:精选文章
本文共 2520 字,大约阅读时间需要 8 分钟。
information_schema.TABLES
表用于获取数据库表的统计信息。该表中的每一列都提供了不同的数据,帮助用户了解表的结构、存储引擎、行数、索引大小等详细信息。以下是该表的主要内容和注意事项:
表结构概述
information_schema.TABLES
表包含以下字段:
- TABLE_CATALOG:表所属的目录名称,始终为
def
。 - TABLE_SCHEMA:表所属的数据库名称。
- TABLE_NAME:表的名称。
- TABLE_TYPE:表示表的类型,如
BASE TABLE
、VIEW
或SYSTEM VIEW
。需要注意的是,该表不列出TEMPORARY
表。 - ENGINE:存储引擎类型。对于分区表,显示所有分区使用的存储引擎名称。
- VERSION:存储引擎版本信息。由于 MySQL 8.0 删除了
.frm
文件,该字段现在固定为10
,表示 MySQL 5.7 的最后一个.frm
文件版本。 - ROW_FORMAT:可选值包括
Fixed
、Dynamic
、Compressed
、Redundant
和Compact
。对于MyISAM
表,Dynamic
对应myisamchk -dvv
记录的Packed
格式。 - TABLE_ROWS:行数。对于
MyISAM
,该值是精确的计数。对于InnoDB
,该值是近似值,可能与实际值相差 40% 到 50%。使用SELECT COUNT(*)
获取准确计数。 - AVG_ROW_LENGTH:行的平均长度。
- DATA_LENGTH:对于
MyISAM
,表示数据文件的总字节数。对于InnoDB
,表示聚集索引分配的大致空间量(以页为单位)。其他存储引擎的信息请参考相关文档。 - MAX_DATA_LENGTH:对于
MyISAM
,表示数据文件的最大允许大小。对于InnoDB
,该字段值为0
。其他存储引擎的信息请参考相关文档。 - INDEX_LENGTH:对于
MyISAM
,表示索引文件的总字节数。对于InnoDB
,表示非聚集索引分配的大致空间量(以页为单位)。其他存储引擎的信息请参考相关文档。 - DATA_FREE:已分配但未使用的字节数。对于
InnoDB
表,表示该表空间内的空闲空间。对于位于共享表空间中的表,空闲空间是共享表空间的空闲部分。即使DATA_FREE
显示为0
,只要不需要新分配空间,仍可插入行。对于 NDB Cluster,DATA_FREE
表示磁盘上为磁盘数据表或片段分配但未使用的空间。 - AUTO_INCREMENT:下一个
AUTO_INCREMENT
值。 - CREATE_TIME:表创建的时间。
- UPDATE_TIME:数据文件上次修改的时间。对于
InnoDB
,由于其表文件没有时间戳,该字段可能为NULL
。对于MyISAM
,在 Windows 系统上,时间戳可能不准确。 - CHECK_TIME:表最后一次检查的时间。对于
InnoDB
表和分区表,该字段始终为NULL
。 - TABLE_COLLATION:表的默认排序规则。
- CHECKSUM:如果表有实时校验和,显示校验和值。
- CREATE_OPTIONS:创建表时使用的额外选项。对于分区表,该字段显示分区信息。对于加密的表空间,
CREATE_OPTIONS
可以显示加密子句。从 MySQL 8.0.16 开始,对于加密的每个表文件,CREATE_OPTIONS
会显示相应的加密选项。 - TABLE_COMMENT:创建表时使用的注释。
注意事项
AVG_ROW_LENGTH
和 DATA_LENGTH
列显示适当值,但未考虑 BLOB
列。DATA_LENGTH
仅包含主存中的数据,MAX_DATA_LENGTH
和 DATA_FREE
列适用于磁盘数据。MAX_DATA_LENGTH
表示磁盘数据表或片段的磁盘部分分配空间。内存中的数据资源使用情况由 DATA_LENGTH
列报告。DATA_LENGTH
、MAX_DATA_LENGTH
和 INDEX_LENGTH
值近似于实际分配的内存量。由于分配算法预留大量内存以减少分配操作,实际使用内存可能小于这些值。TABLE_NAME
、CREATE_TIME
和 TABLE_COMMENT
,其他字段大多为 0
或 NULL
。与 SHOW TABLE STATUS
和 SHOW TABLES
等语句的比较
information_schema.TABLES
表提供的信息与 SHOW TABLE STATUS
和 SHOW TABLES
等语句等价。以下是等价的语句示例:
SELECT TABLE_NAME, ENGINE, VERSION, ROW_FORMAT, TABLE_ROWS, AVG_ROW_LENGTH, DATA_LENGTH, MAX_DATA_LENGTH, INDEX_LENGTH, DATA_FREE, AUTO_INCREMENT, CREATE_TIME, UPDATE_TIME, CHECK_TIME, TABLE_COLLATION, CHECKSUM, CREATE_OPTIONS, TABLE_COMMENTFROM information_schema.tablesWHERE table_schema = 'db_name' [AND table_name LIKE 'tb_name'];SHOW FULL TABLES FROM db_name [LIKE 'tb_name'];
这两个语句返回相同的信息,适用于不同的场景。你可以根据需求选择使用哪种方式获取表信息。
总结
information_schema.TABLES
表是获取数据库表统计信息的重要工具。它提供了丰富的字段,帮助用户了解表的结构和存储引擎特性。通过合理使用该表,可以快速获取表的详细信息,优化数据库性能和管理。
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年03月26日 00时44分59秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【故障公告】10:30-10:45 左右 docker swarm 集群节点问题引发故障
2019-03-06
工作半年的思考
2019-03-06
不可思议的纯 CSS 滚动进度条效果
2019-03-06
【CSS进阶】伪元素的妙用--单标签之美
2019-03-06
惊闻NBC在奥运后放弃使用Silverlight
2019-03-06
IE下尚未实现错误的原因
2019-03-06
创建自己的Docker基础镜像
2019-03-06
Python 简明教程 --- 20,Python 类中的属性与方法
2019-03-06
KNN 算法-理论篇-如何给电影进行分类
2019-03-06
Spring Cloud第九篇 | 分布式服务跟踪Sleuth
2019-03-06
CODING 敏捷实战系列课第三讲:可视化业务分析
2019-03-06
工作动态尽在掌握 - 使用 CODING 度量团队效能
2019-03-06
CODING DevOps 深度解析系列第二课报名倒计时!
2019-03-06
数据结构第八节(图(下))
2019-03-06
基于Mustache实现sql拼接
2019-03-06
POJ 2260 Error Correction 模拟 贪心 简单题
2019-03-06
gRPC在 ASP.NET Core 中应用学习(一)
2019-03-06
@SuppressWarnings 用法
2019-03-06
看完你就明白的锁系列之锁的状态
2019-03-06
看完这篇操作系统,和面试官扯皮就没问题了
2019-03-06