二十九、MySQL基础系列笔记之事件调度器

作者: 温新

分类: 【MySql】

阅读: 1734

时间: 2020-11-21 12:29:56

什么是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的取值如下

使用事件调度器

查看是否开启调度器

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月27日

请登录后再评论