Mysql的事件调度器
事件调度器是Mysql5.1后新增的功能,可以将数据库按自定义的时间周期触发某种操作,可以理解为时间触发器,类似Linux系统下的任务调度器crontab.
下面是一个最简单的事件调度器:
CREATE event myevent
on SCHEDULE AT `CURRENT_TIMESTAMP`()+INTERVAL 1 HOUR
DO
UPDATE myschema.mytable set mycol = mycol+1;
其中:
- 事件名称在create event关键字后指定;
- 通过on SCHEDULE字句指定事件在何时执行,及执行频次;
- 通过Do句子指定要执行的具体操作或者事件.
(1)创建测试表test:
create table test(id1 varchar(10),create_time datetime);
(2)创建事件调度器test_event_1,每隔5秒向test中插入一条数据
create EVENT test_event_1
on SCHEDULE
EVERY 5 SECOND
DO
INSERT INTO test4.test(id1,create_time)
VALUES('test',now());
(3)查看调度状态:
show events \G
(4)现在查看test表,发现并没有数据:
(5)现在查看下调度器状态,发现默认是关闭的:
show variables like '%scheduler%';
(6)开启调度器:
set global event_scheduler = 1;
(7)隔几秒查看下test表,已经出现了数据:
(8)为了防止表变得很大,创建一个新的调度器,每隔一分钟清空一次test:
CREATE EVENT truc_test
on SCHEDULE EVERY 1 MINUTE
DO TRUNCATE TABLE test;
(9)如果事件调度器不再使用,可以禁用(disable)或者删除(drop)掉:
--禁用event
alter EVENT test_event_1 DISABLE;
--删除event
DROP test_event_1 ;