我有一个Amazon(AWS)Aurora数据库集群,而且每天都[Billed] Volume Bytes Used
在增加。
我已经使用表格检查了所有表格(在该群集中所有数据库中)的大小INFORMATION_SCHEMA.TABLES
:
SELECT ROUND(SUM(data_length)/1024/1024/1024) AS data_in_gb, ROUND(SUM(index_length)/1024/1024/1024) AS index_in_gb, ROUND(SUM(data_free)/1024/1024/1024) AS free_in_gb FROM INFORMATION_SCHEMA.TABLES;
+------------+-------------+------------+
| data_in_gb | index_in_gb | free_in_gb |
+------------+-------------+------------+
| 30 | 4 | 19 |
+------------+-------------+------------+
总计:53GB
那么,为什么此时我要向我收取近75GB的费用呢?
我了解到,永远无法释放已调配的空间,就像普通MySQL服务器上的ibdata文件永远不会缩小一样。我可以。这是有记录的,可以接受。
我的问题是,每天结算的空间会增加。而且我确定我不会暂时使用75GB的空间。如果我要做这样的事情,我会明白的。就像我通过删除表中的行,删除表,甚至删除数据库释放的存储空间从未被重复使用。
我已经多次联系过AWS(高级)支持,但始终无法很好地解释为什么。
我已经收到建议OPTIMIZE TABLE
在有很多表free_space
(每个INFORMATION_SCHEMA.TABLES
表)的表上运行,或者检查InnoDB历史记录的长度,以确保删除的数据仍不保留在回滚段中(参考:MVCC) ,然后重新启动实例以确保回滚段为空。
这些都没有帮助。