百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>数据库> mysql定时任务 Event Scheduler用法详解
分享文章到:

mysql定时任务 Event Scheduler用法详解

发布时间:01/15 来源: 浏览: 关键词:
Event Scheduler是mysql新出的一个事件,他查一个计划任务类的功能,我们可以通过在mysql中创建event来定时执行一些sql语句,这个我们就完全不需要像以前一样来利用系统的计划任务来执行定时任务了哦。

1.开启

全局变量event_scheduler用来设定是否服务器端运行执行计划任务,该变量有如下三种值:
OFF:计划任务处于停止状态,event scheduler线程没有运行。是event_scheduler的默认值(执行一下任意一条命令关闭);

 代码如下

SET GLOBAL event_scheduler = OFF; 

SET @@global.event_scheduler = OFF; 

SET GLOBAL event_scheduler = 0; 

SET @@global.event_scheduler = 0;

ON:计划任务处于运行状态,event scheduler线程启动,并执行所有的计划任务(执行一下任意一条命令开启);

 

 代码如下

SET GLOBAL event_scheduler = ON; 

SET @@global.event_scheduler = ON; 

SET GLOBAL event_scheduler = 1; 

SET @@global.event_scheduler = 1;

DISABLED:该值将致使计划任务不可运行
运行MySql服务时候加上参数

 代码如下

--event-scheduler=DISABLED

或者在my.cnf 中设置

查看源代码打印帮助
1 event_scheduler=DISABLED
MySQL的Event Scheduler是根据预先安排的计划进行数据库操作的数据库对象,可以看作是一种“时间触发器”。Event实际上是被一个特殊的event scheduler线程执行的,假如它正在运行的话,可以通过SHOW PROCESSLIST命令看到它。


2.创建

创建的基本语法是:

 代码如下

1 CREATE EVENT        (1) 

2 [IF NOT EXISTS]        (2) 

3 event_name         (3) 

4 ON SCHEDULE schedule      (4) 

5 [ON COMPLETION [NOT] PRESERVE]   (5) 

6 [ENABLE | DISABLE]       (6) 

7 [COMMENT 'comment']       (7) 

8 DO sql_statement        (8)

逐条介绍:
(1) 创建Event嘛,这俩关键字当然不能少了
(2) 如果不存在同名的数据库对象才创建
(3) 计划任务的名字。作为数据库对象,都有一个本库内唯一的名字做标识
(4) 计划任务的计划,重点就在这儿。有两个关键字来设定任务的执行计划:AT和EVERY:
AT指定的是一个一次性计划,后面跟着一个时间戳,后续的sql语句将在指定的时间被执行一次;
EVERY指定的是一个周期性计划,在该子句中可以指定从某时间点到某时间点期间,每隔某周期就执行一次该任务。
(5) 任务整个执行完毕后,该计划任务对象是否还在数据库中保留。默认不保留
(6) 有效或失效。默认有效
(7) 真正要执行的语句

3.示例

1.每10秒钟向myschema.mytable表中插入时间戳:

 代码如下

 CREATE EVENT e_store_ts ON SCHEDULE EVERY 10 SECOND DO INSERT INTO myschema.mytable VALUES (UNIX_TIMESTAMP());

2.在2008-02-06 23:59:00开始的一年内,每隔1小时就删除掉messages表的早先的10条记录:

 代码如下


 CREATE EVENT e_hourly 

            ON SCHEDULE 

            EVERY 1 HOUR STARTS ’2007-02-10 23:59:00′ ENDS ’2008-02-10 23:59:00′ 

            DO 

         DELETE FROM messages limit 10;


4.查看EVENT

 代码如下

mysql>SELECT * FROM INFORMATION_SCHEMA.EVENTS
     >   WHERE EVENT_NAME='e_store_ts'
     >   AND EVENT_SCHEMA='myschema'G
*************************** 1. row ***************************
   EVENT_CATALOG: NULL
    EVENT_SCHEMA: myschema
      EVENT_NAME: e_store_ts
         DEFINER: jon@ghidora
      EVENT_BODY: SQL
EVENT_DEFINITION: INSERT INTO myschema.mytable VALUES (UNIX_TIMESTAMP())
      EVENT_TYPE: RECURRING
      EXECUTE_AT: NULL
  INTERVAL_VALUE: 5
  INTERVAL_FIELD: SECOND
        SQL_MODE: NULL
          STARTS: 0000-00-00 00:00:00
            ENDS: 0000-00-00 00:00:00
          STATUS: ENABLED
   ON_COMPLETION: NOT PRESERVE
         CREATED: 2006-02-09 22:36:06
    LAST_ALTERED: 2006-02-09 22:36:06
   LAST_EXECUTED: NULL
   EVENT_COMMENT:
1 row in set (0.00 sec)

5.删除EVENT

 代码如下

DELETE FROM mysql.event
    WHERE db = 'myschema'
      AND definer = 'jon@ghidora'
      AND name = 'e_insert';

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有6人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板