小编典典

滚动从MySQL删除旧行的最佳方法是什么?

mysql

我发现自己想在许多应用程序中滚动删除早于(x)天的行。在交通繁忙的桌子上最有效地做到这一点的最佳方法是什么?

例如,如果我有一个存储通知的表,而我只想将其保留7天。还是我只想保留31天的高分。

现在,我继续存储存储的纪元时间,并运行一个cron作业,该作业每小时运行一次,并按如下所示增量删除它们:

DELETE FROM my_table WHERE time_stored < 1234567890 LIMIT 100

我这样做直到mysql_affected_rows返回0。

我曾经一次完成所有操作,但是当INSERTS堆积时,导致应用程序中的所有内容挂起了30秒左右。添加LIMIT可以缓解这种情况,但是我想知道是否有更好的方法可以做到这一点。


阅读 310

收藏
2020-05-17

共1个答案

小编典典

查看MySQL分区

通常,通过删除仅包含该数据的分区,可以轻松地从分区表中删除失去其用途的数据。相反,在某些情况下,通过添加一个或多个用于专门存储该数据的新分区,可以大大简化添加新数据的过程。

请参见本节,以获取有关如何应用它的一些想法:

MySQL分区修剪

还有这个:

按日期分区:快速入门

2020-05-17