数据库定期清理
Posted
技术标签:
【中文标题】数据库定期清理【英文标题】:Database periodic cleansing 【发布时间】:2011-10-01 09:48:33 【问题描述】:我正在创建一个公共消息服务,我想知道,为了清除最旧的消息,是否可以在每次提交新消息时删除最旧的消息?还是由于某种原因这种方法效率低下?如果有,您能具体说明原因吗?
我考虑为此创建一个Cron Job,但我不确定它是否适用于这种情况。
【问题讨论】:
【参考方案1】:您可以在 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
【讨论】:
【参考方案2】:我建议 Cron Job,我相信每条消息都有时间戳,因此您可以在 cron 运行时借助时间戳删除旧帖子。
【讨论】:
【参考方案3】:这听起来不太可能是合适的。删除旧消息的适当性不太可能取决于新消息 - 例如,如果您打算将消息保留至少一个月,那么如果您突然收到短时间内收到大量消息。
我建议您制定您的“垃圾”标准,然后安排定期作业批量删除旧邮件(例如每天一次)。
【讨论】:
Not entirely unlike... 双重否定总是让我头晕目眩... 但是 +1 表示关注点分离... @Jordão:抱歉,是的,我的意思是这听起来不太合适。已编辑。 谢谢,现在它变得完美有意义了。以上是关于数据库定期清理的主要内容,如果未能解决你的问题,请参考以下文章