title: mysql定时器
date: 2019-05-06 22:20:14
categories:

  • Mysql

mysql的定时器

查看定时策略是否开启

1
2
3
4
5

show variables like '%event_sche%'; //查看命令

//显示的 event_scheduler 为 OFF 时用以下命令开启:
set global event_scheduler=1;

创建存储过程

1
2
3
4
create procedure test_proce()
begin
insert into weuse(name,created_at,updated_at) values('hello',now(),now());
end

定时器示例demo

1
2
3
4
create event second_event
on schedule every 1 second
on completion preserve disable
do call test_proce();

第一行 create event day_event 是创建名为 second_event 的事件,注意此处没有括号;
第二行是创建周期定时的规则,本处的意思是每秒钟执行一次;
第三行 on completion preserve disable 是表示创建后并不开始生效;
第四行 do call test_proce() 是该 event(事件) 的操作内容,表示调用我们刚刚创建的 test_proce() 存储过程。

查看定时任务 event ( 事件 )

查看本机所有的事件

1
2
1
SELECT event_name,event_definition,interval_value,interval_field,status FROM information_schema.EVENTS;

开启已经创建好的 event ( 事件 )

1
2
alter event second_event on completion preserve enable;//开启定时任务
alter event second_event on completion preserve disable;//关闭定时任务

删除定时器

1
DROP event second_event;

常见周期定时规则

周期执行 – 关键字 EVERY

单位有:second, minute, hour, day, week(周), quarter(季度), month, year

1
2
3
on schedule every 1 second		//每秒执行1次
on schedule every 2 minute //每两分钟执行1次
on schedule every 3 day //每3天执行1次

在具体某个时间执行 – 关键字 AT

1
2
3
on schedule at current_timestamp()+interval 5 day	// 5天后执行
on schedule at current_timestamp()+interval 10 minute // 10分钟后执行
on schedule at '2016-10-01 21:50:00' // 在2016年10月1日,晚上9点50执行

在某个时间段执行 – 关键字 STARTS ENDS

1
2
on schedule every 1 day starts current_timestamp()+interval 5 day ends current_timestamp()+interval 1 month // 5天后开始每天都执行执行到下个月底
on schedule every 1 day ends current_timestamp()+interval 5 day //从现在起每天执行,执行5天