如果未启用每个文件的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,而不是表格。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...