【问题标题】:Database periodic cleansing数据库定期清理
【发布时间】:2011-10-01 09:48:33
【问题描述】:

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

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

【问题讨论】:

    标签: mysql database cron maintenance


    【解决方案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:抱歉,是的,我的意思是这听起来不太合适。已编辑。
        • 谢谢,现在它变得完美有意义了。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多