Mysql设置表只存储一段时间的数据

使用MySQL的事件调度器(Event Scheduler)来定期删除表中的数据。

假设你要删除的表是mytable,并且表中有一个名为created_at的日期时间类型的列,存储了每条记录的创建时间。你可以通过以下步骤设置表只存储30天的数据:

1. 创建一个事件(Event),指定事件的名称、开始时间和结束时间,以及事件的执行频率和执行内容。以下是一个例子:

CREATE EVENT delete_old_data
ON SCHEDULE EVERY 1 DAY
STARTS '2023-05-01 00:00:00'
ENDS '2030-12-31 00:00:00'
DODELETE FROM mytable WHERE created_at < DATE_SUB(NOW(), INTERVAL 30 DAY);

这个事件的作用是每天执行一次,从mytable表中删除所有创建时间早于30天前的记录。事件的开始时间是2023年5月1日,结束时间是2030年12月31日。

2.开启事件调度器。

如果你的MySQL服务器上没有启用事件调度器,你需要在MySQL配置文件中添加以下配置(需要重启,永久生效):

event_scheduler = ON

或者在MySQL命令行客户端中执行以下语句(重启后失效):

SET GLOBAL event_scheduler = ON;

查看设置好的定时调度任务开关状态:

SHOW VARIABLES LIKE 'event_scheduler';

在这里插入图片描述

3.验证事件是否生效。你可以通过以下命令来查看所有的事件:

SHOW EVENTS;

如果你的事件已经创建成功,你应该能够在输出中看到该事件的信息。

这样,每天定时执行事件调度器,就可以保证mytable表中只存储30天内的数据。
在这里插入图片描述

4.查看设置好的任务详情:

SELECT * FROM information_schema.EVENTS;


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部