MySQL-我可以查询某些行或列占用了多少磁盘空间吗?

时间:2019-01-22 09:28:52

标签: mysql diskspace

我在MySQL中有一个很大的表,希望通过优化数据使其更小。

现在我想知道MySQL是否具有允许我通过删除某些行或列来计算要保存多少字节的功能?

是这样的:从(子查询...)中选择bytes_used(*),还是类似的东西?

我当然可以复制表并比较删除行或列后使用的存储,但这会花费很多时间。我可以迁移或删除某些数据,并在应用程序中以不同的方式构建它们,而不会破坏任何内容。

这个问题是关于评估可能的收益以及该行动方针是否值得追求。

关于使用MySQL数据计算磁盘空间的任何其他帮助也非常受欢迎。我知道您可以在phpMyAdmin中看到一个表占用了多少数据,但是我正在寻找更多。

附录:我正在查找行或列级别的数据大小,而不是整个表。

1 个答案:

答案 0 :(得分:3)

无法基于行或列获取数据大小,但是您可以像这样获取整个表的数据:

您可以查询information_schema.TABLES表以获取表使用的磁盘空间,例如:

SELECT * 
FROM information_schema.TABLES
WHERE TABLE_NAME = `<your_table>`;

这有以下几列(根据文档here):

  

DATA_LENGTH :对于MyISAM,DATA_LENGTH是数据文件的长度,   以字节为单位。对于InnoDB,DATA_LENGTH是大约的内存量   为聚簇索引分配的字节数。具体来说,   聚集索引的大小(以页为单位)乘以InnoDB页面的大小。

     

AVG_ROW_LENGTH :平均行长。

这些将使您了解表使用了多少空间,以及如果删除某些行将大致获得多少空间。