MySQL定期删除指定时间前的数据
MySQL5.1及之后就支持了事件。
查看MySQL是否开启了事件功能
show variables like '%sc%';
+----------------------------------------------------------+-------+
| Variable_name | Value |
+----------------------------------------------------------+-------+
| disconnect_on_expired_password | ON |
| event_scheduler | ON |event_sheduler是ON开启的。
如果是OFF,则需要手动开启:
在my.cnf中的[mysqld]部分添加如下内容,然后重启mysql(mysql重启命令:service mysqld restart)event_scheduler=ON
创建事件
切换到目标数据库use database;
create event e_delete_temp_humd on schedule every 30 second do delete from temp_humd where timestamp < (CURRENT_TIMESTAMP() + INTERVAL -7 DAY);
e_delete_temp_humd:事件名称
30 second:每30秒执行
temp_humd:需要删除数据的表名称
timestamp:表中的时间字段(需要建表的时间就创建好,类型选择timestamp,默认CURRENT_TIMESTAMP,额外DEFAULT_GENERATED)
7 DAY:指定的时间创建一条名为e_delete_temp_humd的事件,每30秒执行一次,删除temp_humd表中7天之前的数据
如果事先存在这个事件可以使用如下命令进行删除:drop event if exists e_delete_temp_humd;
查看事件:show events;
如果有安装phpmyadmin也可以在网页上操作
参考资料:
MYSQL:指定时间删除过期数据
mysql定时删除过期数据记录的简单方法
mysql通过事件定时删除过期数据记录方法
评论已关闭