在某些情况下,我们使用MySQL按日期分区来存储数据,保存信息的X天,每天自动创建分区并删除旧分区(记住这里没有存档,只需删除)。数据还被某些散列划分成40个分区,以进一步优化访问。
当每天运行"alter分区“查询时,DB会出现明显的性能下降,而在此DB上中继的应用程序会显示掉的连接,每秒提供的请求更少等等。
对于这个带有MySQL的特定应用程序,我们正在运行InnoDB 5.5.17,每个被删除的分区都有数百万条记录(可能超过1000万条)。每个分区的大小平均为4.5GB。
在分区放置时,我没有看到该框上有任何密集的IO,所以我只能假设它与此无关。然而,CPU平均负载从正常的0.5上升到每天的8-10左右。这事持续了几分钟。
分区放置不是应该是一个简单的逻辑下降吗?我们是否有可能做错了什么,或者我们可以以某种方式来调整它,或者这是我们所期待的。
干杯
发布于 2012-11-20 01:43:04
我知道这是个老掉牙的问题,但这个问题没有答案,所以我会马上回答它。
如果您的文件系统是ext3,删除该文件可能需要一些时间。XFS和ext4会快得多。
从MySQL的角度来看,加快速度的一个诀窍是创建到分区文件的硬链接(而不是符号链接)。然后,DROP分区将简单地减少文件上的引用计数,这几乎是即时的。您可以将您创建的文件链接移除。这还需要一些时间,但MySQL不会看到。
https://stackoverflow.com/questions/10366425
复制相似问题