mysql 事件调度器_MySQL事件调度器Event Scheduler

事件调度器是定时触发运行的。在这个角度上也能够称作是"暂时的触发器"。

触发器仅仅是针对某个表产生的事件运行一些语句。而事件调度器则是在某一个(间 隔)时间运行一些语句。事件是由一个特定的线程来管理的,也就是所谓的"事件调度器"。

启用事件调度器后。拥有

SUPER 权限的账户运行 SHOW PROCESSLIST 就能够看到这个线程了。

一、事件调度器event_scheduler的开启:

mysqlserver时间调度器的开启是由一个名叫event_scheduler的全局变量控制的,这个变量默觉得OFF或者是0。

查看是否开启:mysql>SHOW

GLOBAL VARIABLES LIKE ‘event%‘;//OFF 关闭;ON 开启;

mysql>SELECT

@@event_scheduler;//0 关闭;1 开启。

要使用事件调度器必须先开启event_scheduler。开启的方法例如以下:1、SET GLOBAL event_scheduler = ON

2、SET GLOBAL event_scheduler = 1;3、SET @@global.event_scheduler = ON;

4、SET @@global.event_scheduler = 1;

二、事件调度器event_scheduler的语法:

事件调度器event_scheduler的语法主要包含创建。改动。删除。新建一个event后。假设还未删除,我们能够在mysql的information_schema下的EVENTS表中查到该event。

1、创建event(CREATE

EVENT)

语法:CREATE

EVENT [IF NOT EXISTS]event_name

ON SCHEDULEschedule

[ON COMPLETION [NOT] PRESERVE]

[ENABLE | DISABLE]

[COMMENT ‘comment‘]

DOsql_statement;

说明:event_name:创建的event名字(唯一确定的)。

ON

SCHEDULE:计划任务

schedule:决定event的运行时间和频率(注意时间一定要是将来的时间。过去的时间会出错)。有两种形式

AT和EVERY

语法:ATtimestamp[+

INTERVALinterval]

| EVERYinterval[STARTStimestamp]

[ENDStimestamp]interval:quantity{YEAR

| QUARTER | MONTH | DAY | HOUR | MINUTE | WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE | DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}(详细说明请參考手冊);

[ON COMPLETION [NOT] PRESERVE]: 可选项。默认是ON

COMPLETION NOT PRESERVE 即计划任务运行完成后自己主动drop该事件;ON COMPLETION  PRESERVE则不会drop掉 。

[COMMENT ‘comment‘]

:可选项,comment用来描写叙述event;相当凝视,最大长度64个字节

[ENABLE

| DISABLE] :设定event的状态,默认ENABLE:表示系统尝试运行这个事件,DISABLE:关闭该事情。能够用alter改动

DOsql_statement:

须要运行的sql语句(能够是复合语句)。

注意使用复用语句的时候记得使用分隔符(例3);并且sql语句是由限制,这样的限制跟函数fuction和触发器  trigger中的sql语句限制是一样的。详细是指:LOCK

TABLES; UNLOCK TABLES;CREATE EVENT(#bug 18896);ALTER EVENT(#bug 18896);LOAD DATA;CREATE EVENT 是不可预处理的。CREATE EVENT在存储过程中使用时合法的;CREATE EVENT不能够再嵌入式的embedded mysql数据中使用。

样例:

例1、CREATE EVENT myevent

ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR

DO

UPDATE myschema.mytable SET mycol = mycol + 1;(从创建開始一小时后运行1次该语句)

例2、CREATE EVENT e_hourly

ON SCHEDULE EVERY 1 HOUR

COMMENT ‘Clears out sessions table each hour.‘

DO

DELETE FROM site_activity.sessions; (每隔一小时删除session表)

例3:DELIMITER |

CREATE EVENT e

ON SCHEDULE EVERY 5 SECOND

DO

BEGIN

DECLARE v INTEGER;

DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN END;

SET v = 0;

WHILE v < 5 DO INSERT INTO t1 VALUES (0);

UPDATE t2 SET s1 = s1 + 1; SET v = v + 1;

END WHILE;

END |

DELIMITER ;

2、改动event(ALTER

EVENT)

语法:ALTER

EVENTevent_name

[ON SCHEDULEschedule]

[RENAME TOnew_event_name]

[ON COMPLETION [NOT] PRESERVE]

[COMMENT ‘comment‘]

[ENABLE | DISABLE]

[DOsql_statement]

说明:语句中的ON

SCHEDULE,ON COMPLETION,COMMENT,ENABLE/DISABLE,

andDO与CREATE EVENT中的全然一致

注意:改动event只对已经存在的event起作用

样例:

1、ALTER

EVENTno_such_eventON SCHEDULEeveru ‘2:3‘ DAY_HOUR(result:ERROR

1517 (HY000): Unknown event ‘no_such_event‘)

2、先创建一个event:

CREATE EVENT myevent

ON SCHEDULE EVERY 6 HOUR

COMMENT ‘A sample comment.‘

DO

UPDATE myschema.mytable SET mycol = mycol + 1;

改动1:

ALTER EVENT myevent

ON SCHEDULE EVERY 12 HOUR

STARTS CURRENT_TIMESTAMP + 4 HOUR; (将原来的6小时运行一次,改动成4小时后每12小时运行一次)

改动2:

ALTER EVENT myevent DISABLE; (将默认的ENABLE改动为 DISABLE)

2、改动event(ALTER

EVENT)

语法:

DROP EVENT [IF EXISTS]event_name

原文链接:http://blog.163.com/wumingli456@126/blog/static/28896414201082732227944/

MySQL事件调度器Event Scheduler

标签:into   timestamp   不能   使用   嵌入   ica   权限   log   color

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:http://www.cnblogs.com/gavanwanggw/p/7072580.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值