MySQL 5.6 - InnoDB - 没有使用DATA_FREE,但表不断增长

时间:2016-11-01 17:54:01

标签: mysql innodb

innondb_file_per_table = 1

我们有一个大型表格,其中data_free很大。

我们会定期从此表​​中清除旧数据。

早些时候(当MySQL 5.5时),我们观察到data_free正在消耗,随着档案流程的增加,它正在增加,之后被消耗到下一轮档案。

但是在转移到5.6之后,我们发现data_free没有被使用,但是表格不断增长。

任何指针为什么会发生这种情况?

1 个答案:

答案 0 :(得分:0)

这就是生命。 MySQL不能很好地将磁盘空间返回给操作系统。

由于它是一个单独的.ibd文件,因此您可以在定期存档后立即执行OPTIMIZE TABLE。但随后它将恢复到大尺寸。

数据是否为"滑动时间"?也就是说,你保持一个月的价值,然后每晚取消一天的价值吗?这是PARTITIONs闪耀的一个案例。 DROP PARTITION 将分区使用的空间返回给操作系统。如果你想将旧日复制到其他地方,那么你需要"可移动的表空间",你需要5.6(或者更好,5.7)。

有关如何使用分区的更多信息:here