【发布时间】:2009-05-01 21:45:08
【问题描述】:
我们使用 mysql 服务器作为集中式日志记录系统,我希望有一份工作来定期删除\清理超过 3 个月的表条目。最好的方法是什么?
提前致谢。
-欣灵
【问题讨论】:
我们使用 mysql 服务器作为集中式日志记录系统,我希望有一份工作来定期删除\清理超过 3 个月的表条目。最好的方法是什么?
提前致谢。
-欣灵
【问题讨论】:
您是否将项目的创建日期存储在字段中?
如果是这样,
DELETE FROM myTable WHERE dateEntered < DATE_SUB(NOW(), INTERVAL 3 MONTH);
应该可以...
您可以在计划任务/cron 作业中运行它...
【讨论】:
MySQL 5.1 支持Events。我自己并没有真正使用过它们,所以我不会为它们担保。但是,如果您只想定期运行 DELETE 语句,我认为它会运行良好。
【讨论】:
一种简单的方法是安排一个每天晚上运行的作业,该作业调用一个存储过程来删除所有超过三个月的行。根据您的操作系统,它应该很容易做到。每晚执行一次,删除的数据量不会像一个月左右执行一次那样多。
我过去也曾在我的 SP 中有代码插入数据以删除当时不需要的数据,所以基本上每次插入一行时,在插入后立即运行一个“清理”过程做了一点维护。这不是我的第一选择,但如果插入数量很少,并且可以快速完成删除(您不想让用户慢下来),它是可行的。这样做的好处是数据总是干净(即所有数据总是
除了删除它们之外,您还应该考虑将这些行归档到另一个表中,如果有任何机会您可能希望有一天将数据用于其他目的。我总是这样做,当某个甚至不知道你正在保存数据的经理突然迫切需要它时,你会惊讶于你看起来像一个英雄...... .你可以为他们送货。
【讨论】:
解释你的问题,“我有不依赖于客户端的代码,我想在数据库上多次运行,我不需要查看输出”,那么答案是“写一个存储的proc,并定期从任何客户端调用它”。
【讨论】: