Mysql的事件调度器

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

image.png

(4)现在查看test表,发现并没有数据:

image.png

(5)现在查看下调度器状态,发现默认是关闭的:
show variables like '%scheduler%';

image.png

(6)开启调度器:
 set global event_scheduler = 1;
(7)隔几秒查看下test表,已经出现了数据:

image.png

(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 ;
posted @ 2019-01-25 20:46  城南少年与猫  阅读(768)  评论(0编辑  收藏  举报