0

我有一个数据库,其中每小时定期填充表。现在数据量增长了很多。我只希望存储 10 天的数据。每天过去后,所有其余部分都会自动删除。

我怎么能在mysql中做到这一点?

4

3 回答 3

0

多种选择..

写一个cron job来做这件事。(使用 PHP/ASP/JSP——无论你在使用什么)

Event在mysql中安排一个

CREATE EVENT `event_name`
ON SCHEDULE schedule
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE | DISABLE ON SLAVE]
DO BEGIN
    DELETE * FROM tablename WHERE date < CURRENT_DATE - INTERVAL 10 DAY
END;

欲了解更多信息,请访问http://www.sitepoint.com/how-to-create-mysql-events/

否则有triggerINSERT 并相应地删除记录(这里的问题是所有插入触发器都会被调用)。

于 2013-01-09T09:44:31.420 回答
0
CREATE EVENT 'eventname' ON 
SCHEDULE EVERY 24 HOUR STARTS '2013-01-09 10:00:00' 
ON COMPLETION NOT PRESERVE ENABLE 
COMMENT 'Clears out old data table each day.'
 DO 
      delete * from tablename WHERE fieldwithdateofinput < CURRENT_DATE - INTERVAL 10 DAY

这将使事件每 24 小时触发一次,从日期 2013-01-09 10:00:00 开始,假设您有一个记录输入时具有注册日期的字段(fieldwithdateofinput)。

于 2013-01-09T09:45:07.860 回答
0

您有 2 个选项。

1.事件调度器

首先创建表并创建事件以对删除 3 周前的记录执行删除查询。

CREATE EVENT `ex1` ON SCHEDULE
EVERY 1 DAY
ON COMPLETION NOT PRESERVE
ENABLE
COMMENT ''
DO BEGIN
DELETE FROM table WHERE DATEDIFF(NOW(),TimeStampColumn) > 10

END
//for 3 weeks

注意:旧版本的 mysql 没有事件调度器

2.创建cron作业

文件 1.sql

DELETE FROM table WHERE DATEDIFF(NOW(),TimeStampColumn) > 10

安排这个命令:

mysql -uusername -ppassword < /path/to/file1.sql

于 2016-04-04T09:10:45.120 回答