欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Mysql的事件调度器

程序员文章站 2022-05-20 14:13:38
...

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
Mysql的事件调度器
image.png
(4)现在查看test表,发现并没有数据:
Mysql的事件调度器
image.png
(5)现在查看下调度器状态,发现默认是关闭的:
show variables like '%scheduler%';
Mysql的事件调度器
image.png
(6)开启调度器:
 set global event_scheduler = 1;
(7)隔几秒查看下test表,已经出现了数据:
Mysql的事件调度器
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 ;