二十九、MySQL基础系列笔记之事件调度器
什么是MySQL中的事件调度器
时间调度器:简单的理解,就是定时任务。按照自定义的时间周期触发某种操作,这就是事件调度器。
如:Linux系统中的crontab。
调度器使用场景及注意点
使用场景
事件调度器适用于定义收集统计信息、定期清理历史数据、定期数据库检查等场景。
注意事项
在繁忙且要求性能的数据库服务器上慎重部署和启用调度器;
过于复杂的处理更适合用程序实现;
开启和关闭事件调度器需要具有超级用户权限。
事件调度器语法
语法
CREATE EVENT event_name
ON SCHEDULE schedule
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE | DISABLE ON SLAVE]
[COMMENT '注释']
DO event_body;
参数解释
event_name 事件名;
schedule子句:指定什么时候执行该事件,以及如何执行该事件,schedule有如下取值
AT timestamp [+ INTERVAL interval] | EVERY interval
[STARTS timestamp [+ INTERVAL interval]]
[ENDS timestamp [+ INTERVAL interval]]
event_body:具体的操作(sql语句)或事件
AT timestamp 只执行一次;EVERY interval重复执行。interval的取值如下
时间 | 说明 |
---|---|
YEAR | 年 |
MONTH | 月 |
DAY | 天 |
HOUR | 时 |
MINUTE | 分 |
SECOND | 秒 |
WEEK | 周 |
QUARTER | 季度 |
YEAR_MONTH | 年:月 |
DAY_HOUR | 日:时 |
DAY_MINUTE | 日:分 |
DAY_SECOND | 日:秒 |
HOUR_MINUTE | 时:分 |
HOUR_SECOND | 时:秒 |
MINUTE_SECOND | 分:秒 |
使用事件调度器
查看是否开启调度器
SHOW VARIABLES LIKE '%event_scheduler%';
开启调度器
set global event_scheduler=1;
创建调度器
# 一分钟后向指定的数据表中插入一条数据
# 说明:t1表就一个id int字段
# CURRENT_TIMESTAMP为当前日期
CREATE EVENT demo_event
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 MINUTE
DO INSERT INTO t1 values (3);
查看事件调度器
SHOW events \G;
禁用或删除调度器
# 禁用调度器
ALTER EVENT demo_event DISABLE;
# 删除调度器
DROP EVENT demo_event;
除了上述的简单使用外,还可以使用具体的时间('2020-2-11-22 00:00:00')及使用begin....end语句块。如 ON SCHEDULE AT '2020-11-22 23:59:00'...
和... DO BEGIN ... END
# 每30向t1表插入一条数据
CREATE EVENT demo_event
ON SCHEDULE EVERY 30 SECOND
DO INSERT INTO t1 values (3);
2020-11-21
请登录后再评论