MYSQL利用事件和存储过程实现执行定时任务

好比有以下需求:删除某个表中当前时间距离日期字段(create_date) 大于8分钟的全部记录,每30s执行一次该操做。mysql

1.建立存储过程test()sql

//删除ljh_test表中超过8分钟的记录blog

//date_add() 增长事件

//date_sub()减小io

//month 月份 minute 分钟 second 秒event

//例如:select DATE_ADD(NOW(),INTERVAL 1 MONTH); //一个月后的时间test

 CREATE PROCEDURE test ()date

  BEGINselect

    delete from ljh_test WHERE create_date <= DATE_SUB(NOW(),INTERVAL 8 MINUTE);
  END;
im

2.建立事件e_test,每30秒执行test()存储过程

CREATE EVENT if not exists e_test
on schedule every 30 second
on completion preserve
do call test();

3.查看mysql中event_scheduler是否打开

show variables like 'event_scheduler'

若是在关闭状态,须要打开它

set global event_scheduler=1;

启动某事件任务

alter event e_test ON COMPLETION PRESERVE ENABLE;

关闭某事件任务

alter event e_test ON COMPLETION PRESERVE DISABLE;

删除某事件

drop EVENT e_test

删除某存储过程

drop PROCEDURE test

相关文章
相关标签/搜索