innondb_file_per_table = 1
。
我们有一个大型表格,其中data_free很大。
我们会定期从此表中清除旧数据。
早些时候(当MySQL 5.5
时),我们观察到data_free正在消耗,随着档案流程的增加,它正在增加,之后被消耗到下一轮档案。
但是在转移到5.6
之后,我们发现data_free没有被使用,但是表格不断增长。
任何指针为什么会发生这种情况?
答案 0 :(得分:0)
这就是生命。 MySQL不能很好地将磁盘空间返回给操作系统。
由于它是一个单独的.ibd文件,因此您可以在定期存档后立即执行OPTIMIZE TABLE
。但随后它将恢复到大尺寸。
数据是否为"滑动时间"?也就是说,你保持一个月的价值,然后每晚取消一天的价值吗?这是PARTITIONs
闪耀的一个案例。 DROP PARTITION
将分区使用的空间返回给操作系统。如果你想将旧日复制到其他地方,那么你需要"可移动的表空间",你需要5.6(或者更好,5.7)。
有关如何使用分区的更多信息:here。