MySQL分区丢弃需要时间

时间:2012-04-28 18:37:10

标签: mysql database-partitioning

在某些情况下,我们使用按日期划分的MySQL分区来存储数据,保留X天的信息,并且每天自动进程创建分区并删除旧分区(请注意,此处没有存档,只需删除)。数据也通过一些散列子分区为40个分区,以进一步优化访问。

当每日“alter table drop partition”查询运行时,DB会出现明显的性能下降,并且在此DB上中继的应用程序会显示连接中断,每秒请求的请求数量较少等。

我们正在使用InnoDB为这个特定应用程序运行MySQL 5.5.17,并且每个分区被删除都有几百万条记录(可能超过1000万条)。每个分区的大小平均为4.5GB。

我没有在分区丢弃时看到该框上有任何密集的IO,所以我只能假设它与此无关。然而,CPU负载平均值从0.5正常值上升到当天的8到10左右。这持续了几分钟。

分区丢弃不应该是一个简单的逻辑丢弃吗?是否有可能我们做错了什么或我们可以以某种方式调整它或者这是预期的。

干杯

1 个答案:

答案 0 :(得分:0)

我意识到这是一个老问题,但是没有答案,所以我会给它一个旋转。

如果您的文件系统是ext3,删除该文件可能需要一些时间。 XFS和ext4将更多更快。

从MySQL的角度来看,你可以采取的一些技巧是为分区的文件创建一个硬链接( not 一个符号链接)。然后,DROP PARTITION将简单地减少文件上的引用计数,这几乎是即时的。您可以删除您对该文件所做的链接。这仍然需要一些时间,但MySQL不会看到它。