我发现自己想在许多应用程序中滚动删除早于(x)天的行。在交通繁忙的桌子上最有效地做到这一点的最佳方法是什么?
例如,如果我有一个存储通知的表,而我只想将其保留7天。还是我只想保留31天的高分。
现在,我继续存储存储的纪元时间,并运行一个cron作业,该作业每小时运行一次,并按如下所示增量删除它们:
DELETE FROM my_table WHERE time_stored < 1234567890 LIMIT 100
我这样做直到mysql_affected_rows返回0。
我曾经一次完成所有操作,但是当INSERTS堆积时,导致应用程序中的所有内容挂起了30秒左右。添加LIMIT可以缓解这种情况,但是我想知道是否有更好的方法可以做到这一点。
查看MySQL分区:
通常,通过删除仅包含该数据的分区,可以轻松地从分区表中删除失去其用途的数据。相反,在某些情况下,通过添加一个或多个用于专门存储该数据的新分区,可以大大简化添加新数据的过程。
请参见本节,以获取有关如何应用它的一些想法:
MySQL分区修剪
还有这个:
按日期分区:快速入门