mysql开启事件调度器

隔壁王叔叔
2018-02-14 / 0 评论 / 275 阅读 / 正在检测是否收录...
mysql event 应用在系统管理或者数据库管理中,需要经常周期性的执行某一个命令或者SQL语句的情况。
  1. 查看是否开启

    mysql> SHOW VARIABLES LIKE '%sche%';
  2. 设置开启

     mysql>SET GLOBAL event_scheduler = ON;
  3. 事件调度器event_scheduler的语法:

    a. 事件调度器event_scheduler的语法主要包括创建,修改,删除,新建一个event后,如果还未删除,我们可以在mysql的information_schema下的EVENTS表中查到该event。

    创建event(CREATE EVENT)
       语法:CREATE EVENT [IF NOT EXISTS] event_name 
             ON SCHEDULE schedule 
             [ON COMPLETION [NOT] PRESERVE] 
             [ENABLE | DISABLE] 
             [COMMENT 'comment'] 
             DO sql_statement; 
       说明:event_name :创建的event名字(唯一确定的);
             ON SCHEDULE:计划任务
             schedule: 决定event的执行时间和频率(注意时间一定要是将来的时间,过去的时间会出错),有两种形式 AT和EVERY
                       语法:AT timestamp [+ INTERVAL interval] | EVERY interval [STARTS timestamp] [ENDS timestamp] 
                       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修改
             DO sql_statement: 需要执行的sql语句(可以是复合语句);
        例子:
        CREATE EVENT e_hourly 
        ON SCHEDULE EVERY 1 HOUR 
        COMMENT 'Clears out sessions table each hour.' 
        DO 
        DELETE FROM site_activity.sessions; (每隔一小时删除session表)
    注意使用复用语句的时候记得使用分隔符;而且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数据中使用。

    b. 修改event(ALTER EVENT)

    语法:ALTER EVENT event_name 
          [ON SCHEDULE schedule] 
          [RENAME TO new_event_name] 
          [ON COMPLETION [NOT] PRESERVE] 
          [COMMENT 'comment'] [ENABLE | DISABLE] 
          [DO sql_statement] 
    说明:语句中的ON SCHEDULE, ON COMPLETION, COMMENT, ENABLE / DISABLE, and DO 与CREATE EVENT中的完全一致
    例子:
      先创建一个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)
    
    注意:修改event仅仅对已经存在的event起作用

    c. 删除event

    DROP EVENT [IF EXISTS] event_name
0

评论 (0)

取消