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

标签 mysql diskspace

我在 MySQL 中有一个巨大的表,我希望通过优化数据来缩小它。

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

比如:select bytes_used(*) from (subquery...),或者类似的东西?

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

这个问题是关于评估可能的 yield 以及是否值得采取这种行动。

也非常欢迎任何其他有关使用 MySQL 数据计算磁盘空间的帮助。我知道您可以在 phpMyAdmin 中看到一张表占用了多少数据,但我想了解的远不止于此。

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

最佳答案

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

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

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

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

DATA_LENGTH : For MyISAM, DATA_LENGTH is the length of the data file, in bytes. For InnoDB, DATA_LENGTH is the approximate amount of memory allocated for the clustered index, in bytes. Specifically, it is the clustered index size, in pages, multiplied by the InnoDB page size.

AVG_ROW_LENGTH: The average row length.

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

关于MySQL - 我可以查询某些行或列占用了多少磁盘空间吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54305079/

相关文章:

php - 验证电子邮件尚未注册 PHP Mysql

mysql - SQL 查询返回仅在 (x) 日期之前订购的帐号列表

java - FileOutputStream 空间不足时关闭

mysql - 当它们具有相同的 FROM 时,一个 SELECT 语句而不是两个

mysql - MySQL通配符字符串选择

mysql - 使用另一个表的 MAX 值连接表

docker - docker磁盘空间的增长速度快于容器的

mysql - 服务器磁盘空间似乎不正确,为什么?

hadoop - HDFS block 有多大?

java - 如何处理Java中的磁盘已满错误