我们有一个mysql表,该表在任何给定时间都有大约1200万行。我们需要删除旧数据,以使表的大小易于管理。
现在,我们每天在午夜使用cron作业运行此查询:
DELETE FROM table WHERE endTime < '1393632001'
上一次运行查询时,它检查了4,602,400,耗时3分钟,CPU瘫痪。
在仍然清除旧数据的同时,如何使CPU,同步数据库连接,磁盘提示深度等不会出现不合理的变化?
PS:您会注意到,查询实际上是在使用周期中的不适当时间进行的。假设我们已经将查询的时间更改为每天使用的最低点。另外,“ endTime”上没有索引,如果可能的话,我宁愿保持这种方式,因为有很多数据被非常定期地插入,并且查找不多。
也许使用cron作业每10分钟,每轮100k或每5分钟每轮50k删除
您将在“数据库管理员”上得到更好的答案
—
James Anderson 2014年