Mysql事件调度器(Event Scheduler)

    Mysql中的事件调度器Event Scheduler类似于linux下的crontab计划任务的功能,它是由一个特殊的时间调度线程执行的

一、查看当前是否开启了event scheduler三种方法

1) SHOW VARIABLES LIKE ‘event_scheduler’;
2) SELECT @@event_scheduler;
3) SHOW PROCESSLIST;(是否有State为:Waiting for next activation的进程,User为event_scheduler)

二、启动关闭event scheduler方法

时间调度器是否开启由全局变量event_scheduler决定,它有三个可以设定的值: – OFF : 事件调度器是关闭的,调度线程并没有运行,并且在SHOW PROCESSLIST中不显示,默认值是OFF – ON :事件调度器是开启的,调度线程并没有运行,并且执行所有的调度事件,通过SHOW PROCESSLIST可以查看Waiting for next activation的进程 – DISABLED : 设定这个值表示Event Scheduler是被禁止的,无法在Mysql运行状态下改变其值

注:在Mysql启动时如果在my.cnf设置了event_scheduler=ON(OFF or 1 or 0)时,就不能在运行时修改撑DISABLED,如果设置event_scheduler=DISABLED时,就不能在运行时修改其值为ON ( OFF or 1 or 0)

三、创建Event

说明:

  DEFINER默认是CREATE EVENT的用户,可以理解为DEFINER=CURRENT_USER,指该event的用户,服务器在执行该事件时,使用该用户来检查权限;如果设置语法:‘user_name’@‘host_name’,如果当前CREATE EVENT用户没有supser权限,则无法将该event指派给其他用户;如果有super权限,则可以指定任意存在的用户,若不存在,时间执行时报错
IF NOT EXISTS : 如果在同一个schema创建一个已经存在的event_name时不会做任何操作,也不会出错,但会出现warings:该event已经存在;如果不增加此关键词已经存在的话提示ERROR: 1537 (HY000): Event ‘countsum’ already exists
ON SCHEDULE :用于设置什么时间执行,执行的频率及执行多久的问题
AT timestamp :表示在给定的datetime或者timestamp的时间执行一次
+ INTERVAL interval:表示从AT timestamp多久之后执行
EVERY interval :有规律的重复执行
[ENABLE | DISABLE]可是设置该事件创建后状态是否开启或关闭,默认为ENABLE
[COMMENT ‘comment’]可以给该事件加上注释。

实例:
前提:创建EVENT的用户需要只少对应schema的EVENT权限
最基本的create event只需要三个部分:
1. create event关键字以及一个event名称
2. on schedule子句
3. do子句

四、修改Event

说明:
对于任何一个拥有定义在database里面事件的event权限的用户都可以修改event,并且成功需改后,那个用户就会成为此event的definer

关闭、启动、别名、移动、删除event:

五、查询Event信息

Event信息相关表:
information_schema.events
mysql.event

查看事件的创建信息
show create event countsum \G

查看sem库的events信息
USE sem;
SHOW EVENTS \G

SHOW EVENTS FROM sem;

参考资料:https://dev.mysql.com/doc/refman/5.5/en/events.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注