9.Mysql定时器

By youfang

Mysql定时器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
-- 查看支持定时器
show VARIABLES LIKE '%event_scheduler%';

-- 创建存储过程
create procedure mypro()
BEGIN
UPDATE student SET birth = NOW() WHERE id = 1;
end;
-- 测试存储过程
CALL mypro();

-- 创建mysql的定时器event,这里设置为每30秒执行一次
create event if not exists eventJob
on schedule every 30 second
on completion PRESERVE
do call mypro();
-- – 启动定时器
SET GLOBAL event_scheduler = 1;
-- – 停止定时器
SET GLOBAL event_scheduler = 0;

MYSQL定时任务

1、开启事件调度器
1.1 在使用事件调度器之前,首先需要确认MySQL的事件调度器是否已经 开启。可以通过以下命令查看事件调度器的状态:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
-- 方法一
select @@event_scheduler;

-- 方法二
show variables like 'event_scheduler';


-- 开启event事件:
-- 方法1
-- set GLOBAL event_scheduler=ON;
-- 方法2
-- set GLOBAL event_scheduler=1;

-- 创建任务 V1
CREATE EVENT IF NOT EXISTS add_process
ON SCHEDULE EVERY 1 MINUTE STARTS NOW()
DO
update sys_user set age = age+1 where age < 99
;
-- 创建任务 V2 STARTS下个整分钟
CREATE EVENT IF NOT EXISTS add_process
ON SCHEDULE EVERY 1 MINUTE STARTS DATE_FORMAT( DATE_ADD(NOW(), INTERVAL 1 MINUTE),'%Y-%m-%d %H:%i:00')
DO
update sys_user set age = age+1 where age < 99
;

2.1.1 设定调度周期
调度周期可以根据实际需求设定。以下是常用的调度周期:

每秒钟执行一次:EVERY 1 SECOND
每分钟执行一次:EVERY 1 MINUTE
每小时执行一次:EVERY 1 HOUR
每天执行一次:EVERY 1 DAY
每周执行一次:EVERY 1 WEEK
每个月执行一次:EVERY 1 MONTH
可以根据需求选择合适的调度周期。