数据库定期清理

时间:2011-10-01 09:48:33

标签: mysql database cron maintenance

我正在创建一个公共消息服务,我想知道,为了清理最旧的消息,每次提交新消息时是否可以删除最旧的消息?或者这种方法由于某种原因效率低下?如果是这样,你能说明原因吗?

我考虑为此创建一个 Cron作业,但我不确定它是否适用于这种情况。

3 个答案:

答案 0 :(得分:3)

您可以在MySQL中安排活动:

DELIMITER $$

CREATE EVENT cleanup_messages ON SCHEDULE EVERY day ENABLE 
DO BEGIN
  DELETE FROM messages WHERE ......;
END $$

DELIMITER ;

http://dev.mysql.com/doc/refman/5.1/en/create-event.html

答案 1 :(得分:1)

听起来不太可能是合适的。删除旧邮件的适当性不太可能取决于新邮件 - 例如,如果您要将邮件保留至少一个月,那么如果您突然获得邮件,则不希望开始删除最近的邮件在很短的时间内收到很多消息。

我建议您制定出“垃圾”标准,然后安排常规工作批量删除旧邮件(例如每天一次)。

答案 2 :(得分:1)

我建议使用Cron Job,我相信每条消息都有时间戳,因此您可以在cron run上使用时间戳帮助删除旧帖子。