如果未启用每个文件的innodb,如何在mysql 5.6中查找innodb表的数据长度和索引长度

问题描述

在mysql 5.6中,我们禁用了每个文件的innodb。我只想知道表数据和索引的大小。请让我知道如何获取准确的数据。

解决方法

如果启用了innodb_file_per_table,则获取数据长度和索引长度的方法也相同:

SELECT data_length,index_length
FROM INFORMATION_SCHEMA.TABLES
WHERE ENGINE='InnoDB';

或者如果您想要总数:

SELECT SUM(data_length+index_length) AS total
FROM INFORMATION_SCHEMA.TABLES
WHERE ENGINE='InnoDB';

如果启用/禁用innodb_file_per_table,则数据长度和索引长度没有不同。

计算不同的是data_free。如果您禁用了innodb_file_per_table,则将为INFORMATION_SCHEMA.TABLES中的每一行报告整个表空间的data_free。因此,您不应该SUM()使用data_free,因为那样会给您带来误导的结果。它将多次计数相同的data_free,等于表空间中的InnoDB表的数量。

,

SHOW TABLE STATUS提供当前数据库的信息。请注意,Data_free将引用ibdata1,而不是表格。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...