遇到一个需求是每隔一天,清空一次某个缓存表的数据。想到了mysql的事件定时,记录一下操作过程
开启事件配置:
#重启服务后失效
SET GLOBAL event_scheduler = 1;
或 mysql配置文件my.ini/my.cnf 在 [mysqld] 块中添加:event_scheduler=ON (推荐)
重启mysql服务。
查看是否开启事件:
show variables like 'event_scheduler';
on说明已开启
创建存储过程
#创建存储过程
DELIMITER |
DROP PROCEDURE IF EXISTS clear_table_t1 |
CREATE PROCEDURE clear_table_t1()
BEGIN
DELETE FROM `t1`; #这里可以根据自己的业务填充相对应的逻辑
END
|
创建定时任务
CREATE EVENT IF NOT EXISTS time_clear_table_t1
ON SCHEDULE EVERY 86400 SECOND
ON COMPLETION PRESERVE
DO CALL clear_table_t1();
开启定时任务
#开启定时器
ALTER EVENT time_clear_table_t1 ON
COMPLETION PRESERVE ENABLE;
至此,创建了一个每天清空一次 t1 表的事件定时计划任务
删除刚才创建的存储过程:
#删除存储过程
DROP PROCEDURE clear_table_t1;
关闭刚才开启的定时器:
#关闭定时器
ALTER EVENT time_clear_table_t1 ON
COMPLETION PRESERVE DISABLE;