原文链接: http://www.cnblogs.com/c840136/articles/2388512.html

  

  MySQL5.1.x版本中引入了一项新特性EVENT,顾名思义就是事件、定时任务机制,在指定的时间单元内执行特定的任务,因此今后一些对数据定时性操作不再依赖外部程序,而直接使用数据库本身提供的功能。

  要查看当前是否已开启事件调度器,可执行如下SQL:

    SHOW VARIABLES LIKE 'event_scheduler'; 或

    SELECT @@event_scheduler; 或

    SHOW PROCESSLIST; 若显示:

    +-----------------+-------+

     | Variable_name   | Value |

    +-----------------+-------+

     | event_scheduler | OFF   |

    +-----------------+-------+

    则可执行

  SET GLOBAL event_scheduler = 1; 或

  SET GLOBAL event_scheduler = ON; 来开启,也可以直接在启动命令加上“–event_scheduler=1”,例如:

    mysqld ... --event_scheduler=1

    my.ini or my.cnf 中的 [mysqld] 添加 event_scheduler=ON

  创建事件(CREATE EVENT) 先来看一下它的语法:

    CREATE EVENT [IF NOT EXISTS] event_name

       ON SCHEDULE schedule

       [ON COMPLETION [NOT] PRESERVE]

      [ENABLE | DISABLE]

      [COMMENT 'comment']

      DO sql_statement;

    schedule:

      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}

  1)首先来看一个简单的例子来演示每秒插入一条记录到数据表

    USE test;

     CREATE TABLE aaa (timeline TIMESTAMP);

     CREATE EVENT e_test_insert

      ON SCHEDULE EVERY 1 SECOND

       DO INSERT INTO test.aaa VALUES (CURRENT_TIMESTAMP);

     等待3秒钟后,再执行查询成功。

  2) 5天后清空test表:

      CREATE EVENT e_test

        ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 5 DAY

         DO TRUNCATE TABLE test.aaa;

  3) 2007年7月20日12点整清空test表:

      CREATE EVENT e_test

        ON SCHEDULE AT TIMESTAMP '2007-07-20 12:00:00'

        DO TRUNCATE TABLE test.aaa;

  4) 每天定时清空test表:

      CREATE EVENT e_test

        ON SCHEDULE EVERY 1 DAY

        DO TRUNCATE TABLE test.aaa;

   5) 5天后开启每天定时清空test表:

      CREATE EVENT e_test

        ON SCHEDULE EVERY 1 DAY STARTS CURRENT_TIMESTAMP + INTERVAL 5 DAY

        DO TRUNCATE TABLE test.aaa;

   6) 每天定时清空test表,5天后停止执行:

      CREATE EVENT e_test

        ON SCHEDULE EVERY 1 DAY ENDS CURRENT_TIMESTAMP + INTERVAL 5 DAY

         DO TRUNCATE TABLE test.aaa;

  7) 5天后开启每天定时清空test表,一个月后停止执行:

      CREATE EVENT e_test

        ON SCHEDULE EVERY 1 DAY STARTS CURRENT_TIMESTAMP + INTERVAL 5 DAY ENDS CURRENT_TIMESTAMP + INTERVAL 1 MONTH

        DO TRUNCATE TABLE test.aaa; [ON COMPLETION [NOT] PRESERVE]可以设置这个事件是执行一次还是持久执行,默认为NOT PRESERVE。

   8) 每天定时清空test表(只执行一次,任务完成后就终止该事件):

      CREATE EVENT e_test ON SCHEDULE EVERY 1 DAY

        ON COMPLETION NOT PRESERVE

        DO TRUNCATE TABLE test.aaa; [ENABLE | DISABLE]可是设置该事件创建后状态是否开启或关闭,默认为ENABLE。 [COMMENT ‘comment’]可以给该事件加上注释。

  修改事件(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]

  1) 临时关闭事件

      ALTER EVENT e_test DISABLE;

   2) 开启事件

      ALTER EVENT e_test ENABLE;

  3) 将每天清空test表改为5天清空一次:

      ALTER EVENT e_test ON SCHEDULE EVERY 5 DAY;

  删除事件(DROP EVENT) 语法很简单,如下所示:

      DROP EVENT [IF EXISTS] event_name

       例如删除前面创建的e_test事件

      DROP EVENT e_test;

       当然前提是这个事件存在,否则会产生ERROR 1513 (HY000): Unknown event错误,因此最好加上IF EXISTS

      DROP EVENT IF EXISTS e_test;

MySQL计划任务(事件调度器)(Event Scheduler)[转]的更多相关文章

  1. MySQL计划任务(事件调度器)(Event Scheduler)

    http://www.cnblogs.com/c840136/articles/2388512.html https://dev.mysql.com/doc/refman/5.7/en/events- ...

  2. MySQL事件调度器Event Scheduler

    我们都知道windows的计划任务和linux的crontab都是用来实现一些周期性的任务和固定时间须要运行的任务. 在mysql5.1之前我们完毕数据库的周期性操作都必须借助这些操作系统实现. 在m ...

  3. MySQL计划任务(事件调度器)

    原文:http://www.cnblogs.com/c840136/articles/2388512.html 备忘; MySQL5.1.x版本中引入了一项新特性EVENT,顾名思义就是事件.定时任务 ...

  4. mysql存储过程游标加计划任务事件调度器

    存储过程加事件调度器 -- 存储过程 (多个)游标的使用 临时表的使用(让执行时间从一个小时降低到5分钟)DELIMITER $$ DROP PROCEDURE IF EXISTS `eval_cal ...

  5. MySQL事件调度器event的使用

    Q:假设,有一个需求,希望在某一个时刻系统调用一个begin end执行一下:十分钟以后执行一下begin end.亦或有一个需求,每个多长时间周期性执行begin end.那么这个时候该怎么办呢? ...

  6. mysql事件调度器定时删除binlog

    MySQL5.1.6起Mysql增加了事件调度器(Event Scheduler),可以用做定时执行某些特定任务,来取代原先只能由Linux操作系统的计划任务来执行的工作MySQL的事件调度器可以精确 ...

  7. MySQL的事件调度器

    自MySQL5.1.0起,增加了一个非常有特色的功能–事件调度器(Event Scheduler),可以用做定时执行某些特定任务,可以看作基于时间的触发器. 一.开启 事件调度默认是关闭的,开启可执行 ...

  8. mysql事件调度器功能

    一.前言 自MySQL5.1.6起,增加了一个非常有特色的功能–事件调度器(Event Scheduler),可以用做定时执行某些特定任务(例如:删除记录.对数据进行汇总等等),来取代原先只能由操作系 ...

  9. 记录-MySQL中的事件调度Event Scheduler

    下面是自己的实例 /*查询event是否开启(查询结果Off为关闭 On为开启)*/show variables like '%sche%'; /*开启/关闭命令(1开启--0关闭)*/set glo ...

随机推荐

  1. [bzoj2843&&bzoj1180]极地旅行社 (lct)

    双倍经验双倍的幸福... 所以另一道是300大洋的世界T_T...虽然题目是一样的,不过2843数据范围小了一点... 都是lct基本操作 #include<cstdio> #includ ...

  2. D. Longest Subsequence

    D. Longest Subsequence time limit per test 2 seconds memory limit per test 256 megabytes input stand ...

  3. kali中的webshell

    webacoo -g 生成一句话 -o 输出文件 -r 不混淆代码 -t 连接模式 -u 制定URL 生成一句话 webacoo -g -o a.php 连接一句话 webacoo -t -u htt ...

  4. sql server2008数据库复制实现数据同步常见问题

    sql server2008数据库复制实现数据同步常见问题 在原作者基础上追加 sql server2008数据库复制实现数据同步常见问题 23.发布 'xx' 的并发快照不可用,因为该快照尚未完全生 ...

  5. javaScript事件流是什么?

    一.事件 事件是文档或者浏览器窗口中发生的,特定的交互瞬间. 事件是用户或浏览器自身执行的某种动作,如click,load和mouseover都是事件的名字. 事件是javaScript和DOM之间交 ...

  6. webpack运行常见错误归纳

    今天在运行项目的时候,又遇到坑了,在公司运行的好好的项目,到我自己电脑上就报错,提示跨域,想了好久都不明白为啥,webpack配置文件里的ip地址我也改成与本地ip对应的,百思不得其解,在寻求别人帮助 ...

  7. Element类型知识大全

    Element类型 除了Document类型之外,Element类型就要算是Web编程中最常用的类型了.Element类型用于表现XML或HTML元素,提供了对元素标签名.子节点及特性的访问.   要 ...

  8. HTML面试

    ------------------------------------------------------- 行列 td tr ol -------------------------------- ...

  9. IOS中UIScrollView的contentSize、contentOffset和contentInset属性

    IOS中,UIScrollView是可以滚动的视图,其中最常用的UITableView就是继承了UIScrollView. 跟所有的view一样,UIScrollView有一个frame属 性,同时, ...

  10. Codeforces 900C Remove Extra One 模拟

    题目链接:900C Remove Extra One 题意: 首先record是指这个数比数列前面的所有数都大,给了n个数(1-n),删掉一个数,让整个数列的record值达到最大. 题解: 刚开始我 ...