如何通过查询InformationSchema表了解MySQL中特定表的磁盘使用量?
- 内容介绍
- 文章标签
- 相关推荐
本文共计839个文字,预计阅读时间需要4分钟。
MySQL 没有直接的 `SHOW TABLE SIZE` 命令,实际有效的办法只有查询 `INFORMATION_SCHEMA.TABLES`。这里,`DATA_LENGTH` 和 `INDEX_LENGTH` 字段加起来即为该表实际占用的磁盘字节数(不含碎片、undo log、binlog)。
注意:这个视图的数据是「采样值」,不是实时精确值——InnoDB 会定期更新统计信息,所以刚删完大量数据后,数值可能滞后几分钟。如果要强制刷新,可执行 ANALYZE TABLE table_name。
DATA_LENGTH 和 INDEX_LENGTH 分别代表什么
DATA_LENGTH 是表数据页(B+树叶子节点)占用的字节数;INDEX_LENGTH 是所有二级索引(非聚簇索引)页的字节数。主键索引已计入 DATA_LENGTH(因为 InnoDB 聚簇表数据即主键)。
本文共计839个文字,预计阅读时间需要4分钟。
MySQL 没有直接的 `SHOW TABLE SIZE` 命令,实际有效的办法只有查询 `INFORMATION_SCHEMA.TABLES`。这里,`DATA_LENGTH` 和 `INDEX_LENGTH` 字段加起来即为该表实际占用的磁盘字节数(不含碎片、undo log、binlog)。
注意:这个视图的数据是「采样值」,不是实时精确值——InnoDB 会定期更新统计信息,所以刚删完大量数据后,数值可能滞后几分钟。如果要强制刷新,可执行 ANALYZE TABLE table_name。
DATA_LENGTH 和 INDEX_LENGTH 分别代表什么
DATA_LENGTH 是表数据页(B+树叶子节点)占用的字节数;INDEX_LENGTH 是所有二级索引(非聚簇索引)页的字节数。主键索引已计入 DATA_LENGTH(因为 InnoDB 聚簇表数据即主键)。

