today is so lovely.
—————————————– mysql event schedule start ————–
事件调度器(Event Scheduler)是在MySQLv5.1.6中新增的一个功能,它相当于一个定时器,可以在指定的时间点执行一条SQL语句或一个语句块,也可以用于在固定间隔重复执行。 MySql的事件调度器可以精确到秒,对于一些实时性要求较高的数据处理非常有用。
1.查看是否开启
show variables like ‘%sche%’;
若为off,则说明没有开启。
2.开启
①临时开启,重启mysql则无效。
set global event_scheduler =1;
②修改mysql配置文件永久有效
window下,进入mysql安装目录下的my.ini,在【msyqld 】部分下加入
event_scheduler = 1
linux下,进入/etc/my.cnf下,在【msyqld 】部分下加入
event_scheduler = 1
3. 规则
新增
CREATE
[DEFINER = { user | CURRENT_USER }]
EVENT
[IF NOT EXISTS]
event_name
ON SCHEDULE schedule
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE | DISABLE ON SLAVE]
[COMMENT 'comment']
DO event_body;
在以上语句中,包含以下参数:
1、event_name - 事件名,可以是任何合的MySql标识符,不能超64个字符。
创建事件时,可以同时指定Schema,语法结构为:schema_name.event_name
2、schedule - 调度规则,规定事件的执行时间与执行规则。是一个可包含以下值的子语句:
schedule:
AT timestamp [+ INTERVAL interval] ...
| EVERY interval
[STARTS timestamp [+ INTERVAL interval] ...]
[ENDS timestamp [+ INTERVAL interval] ...]
interval:
quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |
DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}
3、event_body - 事件体,可以是单行SQL语法,或是BEGIN……END语句块
查看已创建的事件
SHOW EVENTS; || SELECT * FROM information_schema.EVENTS;
查看某一个事件
SELECT * FROM information_schema.EVENTS where EVENT_NAME = "yu";
4.简单使用
insert 的sql 语句会在创建后,每分钟执行一次。
CREATE EVENT IF NOT EXISTS yu
ON SCHEDULE
EVERY 1 MINUTE
STARTS CURRENT_TIMESTAMP
DO
insert into yi.info (name,subject,score) values("test","test","100");
需要间隔一定时间再开启事务,如,1天后开启,十天后结束
CREATE EVENT IF NOT EXISTS yu
ON SCHEDULE
EVERY 1 MINUTE
STARTS CURRENT_TIMESTAMP + INTERVAL 1 DAY
ENDS CURRENT_TIMESTAMP + INTERVAL 10 DAY
DO
insert into yi.info (name,subject,score) values("test","test","100");
在某个具体时刻清空表
CREATE EVENT IF NOT EXISTS yu
ON SCHEDULE
AT TIMESTAMP '2017-03-11 12:37:00'
DO TRUNCATE TABLE yi.info;
每天零点清空表
CREATE EVENT IF NOT EXISTS yu
ON SCHEDULE
EVERY 1 DAY
STARTS '2016-08-22 00:00:00'
ENDS '2017-08-22 00:00:00'
DO
TRUNCATE TABLE yi.info;
5.开启关闭删除某个事件
①开启
ALTER EVENT yu ON COMPLETION PRESERVE ENABLE;
②关闭
ALTER EVENT yu ON COMPLETION PRESERVE DISABLE;
③删除
DROP EVENT IF EXISTS yu;
6.参考链接
详解MySQL用事件调度器Event Scheduler创建定时任务
Mysql事件学习 AND MySQL计划任务(事件调度器)(Event Scheduler)
by yu
—————————————– mysql event schedule end ————–