定时器

简单的mysql数据库定时清理实例

一、查看event是否开启
show variables like '%sche%';
#开启event_scheduler
set global event_scheduler =1;
#关闭event_scheduler   set global event_scheduler =0;
二、创建存储过程test
CREATE PROCEDURE test ()
BEGIN
  delete from t_xxx where date < date_sub(curdate(),interval 7 day);
END;
三、创建event e_test
create event if not exists e_test
on schedule every 30 second
on completion preserve
do call test();
每隔30秒将执行存储过程test
#关闭事件任务
alter event e_test ON COMPLETION PRESERVE DISABLE;
#开户事件任务
alter event e_test ON COMPLETION PRESERVE ENABLE;

注意:
MySQL只会记录最后一次调度的时间,如果时间往前调整,小于最近执行的时间,则不会执行事件调度。


四.event的时间设置
eg:
     CREATE EVENT test_event ON SCHEDULE EVERY 1 DAY STARTS '2012-09-24 00:00:00'
     ON COMPLETION PRESERVE ENABLE DO CALL test_procedure();
EVERY 后面的是时间间隔,可以选 1 second,3 minute,5 hour,9 day,1 month,1 quarter(季度),1 year

从2013年1月13号0点开始,每天运行一次
ON SCHEDULE EVERY 1 DAY STARTS '2013-01-13 00:00:00'

从现在开始每隔九天定时执行
ON SCHEDULE EVERY 9 DAY STARTS NOW() ;

每天的零点执行
on schedule every 1 day starts date_add(date(curdate() + 1),interval 0 hour)

每个月的一号凌晨1 点执行
on schedule every 1 month starts date_add(date_add(date_sub(curdate(),interval day(curdate())-1 day),interval 1 month),interval 1 hour);

每个季度一号的凌晨1点执行
on schedule every 1 quarter starts date_add(date_add(date(concat(year(curdate()),'-',elt(quarter(curdate()),1,4,7,10),'-',1)),interval 1 quarter),interval 1 hour);

每年1月1号凌晨1点执行
on schedule every 1 quarter starts date_add(date_add(date(concat(year(curdate()),'-',elt(quarter(curdate()),1,4,7,10),'-',1)),interval 1 quarter),interval 1 hour);

你可能感兴趣的:(定时器)