Mysql 数据库定期清理
我正在创建一个公共消息服务,我想知道,为了清理最旧的消息,每次提交新消息时删除最旧的消息可以吗?还是因为某种原因,这种方法效率低下?如果是,你能说明原因吗 我考虑过为此创建一个Cron作业,但我不确定它是否适用于这种情况。这听起来不太合适。删除旧邮件的适当性不太可能取决于新邮件-例如,如果您打算将邮件保留至少一个月,那么如果您在短时间内突然收到大量邮件,则不希望开始删除最近的邮件 我建议您制定“垃圾”标准,然后安排一个定期作业来批量删除旧邮件(例如,每天一次)。这听起来不太合适。删除旧邮件的适当性不太可能取决于新邮件-例如,如果您打算将邮件保留至少一个月,那么如果您在短时间内突然收到大量邮件,则不希望开始删除最近的邮件Mysql 数据库定期清理,mysql,database,cron,maintenance,Mysql,Database,Cron,Maintenance,我正在创建一个公共消息服务,我想知道,为了清理最旧的消息,每次提交新消息时删除最旧的消息可以吗?还是因为某种原因,这种方法效率低下?如果是,你能说明原因吗 我考虑过为此创建一个Cron作业,但我不确定它是否适用于这种情况。这听起来不太合适。删除旧邮件的适当性不太可能取决于新邮件-例如,如果您打算将邮件保留至少一个月,那么如果您在短时间内突然收到大量邮件,则不希望开始删除最近的邮件 我建议您制定“垃圾”标准,然后安排一个定期作业来批量删除旧邮件(例如,每天一次)。这听起来不太合适。删除旧邮件的适当
我建议您制定“垃圾”标准,然后安排一个常规作业来批量删除旧邮件(例如,每天一次)。我建议使用Cron作业,我相信每条邮件都有时间戳,因此您可以在Cron运行时使用时间戳删除旧邮件。我建议使用Cron作业,我相信每条消息都有时间戳,因此您可以借助cron run上的时间戳删除较旧的帖子。您可以在MySQL中安排一个事件:
DELIMITER $$
CREATE EVENT cleanup_messages ON SCHEDULE EVERY day ENABLE
DO BEGIN
DELETE FROM messages WHERE ......;
END $$
DELIMITER ;
您可以在MySQL中安排事件:
DELIMITER $$
CREATE EVENT cleanup_messages ON SCHEDULE EVERY day ENABLE
DO BEGIN
DELETE FROM messages WHERE ......;
END $$
DELIMITER ;
。。。双重否定总是让我头晕目眩。。。但是+1用于分离关注点…@Jordão:对不起,是的,我的意思是这听起来不太合适。编辑。谢谢,现在它有了完美的意义。。。。双重否定总是让我头晕目眩。。。但是+1用于分离关注点…@Jordão:对不起,是的,我的意思是这听起来不太合适。编辑好了。谢谢,现在它很有意义了。