1. 注意:5.1以后才支持!

      让MYSQL定期执行指定的一条命令。功能类似于crontab。

      1、 检查你的MYSQL是否开了这个功能

      SHOW VARIABLES LIKE 'event_scheduler';

      我执行了一遍发现记录为空说明我的MYSQL没有开呢。OK解决办法

      2、  打开你的MYSQL的计划任务功能

      使用这个功能之前必须确保event_scheduler已开启,可执行

      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}

      #单次计划任务: AT 时戳 
      #重复的计划任务 EVERY 时间(单位)的数量 时间单位 [STARTS 时戳][ENDS 时戳] 
      在两种计划任务中,时戳可以是任意的TIMESTAMP 和DATETIME 数据类型,要求提供的是将来的时间(大于CURRENT_TIMESTAMP),而且小于Unix时间的最后时间(等于或小于'2037-12-31 23:59:59') 
      时间单位是关键词:YEAR,MONTH,DAY,HOUR,MINUTE 或者SECOND 
      3.[ON COMPLETION [NOT] PRESERVE] COMPLETION 当单次计划任务执行完毕后或当重复性的计划任务执行到了ENDS阶段。而声明PRESERVE的作用是使事件在执行完毕后不会被Drop掉 
      4.[ENABLE|DESABLE] ENABLE  开启事件 DESABLE 关闭事件 
      5.COMMENT 注释 
      6.DO sql_statement 执行的sql语句

      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秒钟后,再执行查询看看:

      mysql> SELECT * FROM aaa;
      +---------------------+ 
      | timeline            | 
      +---------------------+ 
      | 2007-07-18 20:44:26 | 
      | 2007-07-18 20:44:27 | 
      | 2007-07-18 20:44:28 | 
      +---------------------+
      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;

      create event test
      ON SCHEDULE AT '2007-09-01 12:00:00' + INTERVAL 1 DAY
      on completion not preserve 
      do insert into yyy values('hhh','uuu');

      解释:从2007-09-01开始,每天对表yyy在12:00:00进行一个插入操作。而且只执行一次(on completion not preserve )

      我的计划任务为:

      create event sysplan
      ON SCHEDULE AT '2010-05-22 23:00:00' + INTERVAL 1 DAY
      on completion not preserve 
      do truncate table bjproj.ae_tmp;

      三、通过设定全局变量event_scheduler 的值即可动态的控制事件调度器是否启用。  
      查看是否event_scheduler开启 mysql> SHOW VARIABLES LIKE '%event%'; 
      设置开启 mysql> SET GLOBAL event_scheduler=ON; 
      四、例子: 
      每分钟插入一条日志: DELIMITER // CREATE EVENT `user_log_event` ON SCHEDULE EVERY 1 MINUTE STARTS '2010-12-27 00:00:00'  ON COMPLETION NOT PRESERVE ENABLE DO  BEGIN  INSERT INTO log SET addtime=NOW(); END // 
      调用存储过程: DELIMITER // CREATE EVENT `user_log_event` ON SCHEDULE EVERY 1 DAY STARTS '2010-00-00 00:00:00'  ON COMPLETION NOT PRESERVE ENABLE DO  BEGIN         CALL user_log_prov(); END // 转http://blog.chinaunix.net/u2/84280/article_100139.html

详解 MySQL 的计划任务的更多相关文章

  1. MySQL存储过程详解 mysql 存储过程

    原文地址:MySQL存储过程详解  mysql 存储过程作者:王者佳暮 mysql存储过程详解 1.     存储过程简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储 ...

  2. [深入学习Web安全](5)详解MySQL注射

    [深入学习Web安全](5)详解MySQL注射 0x00 目录 0x00 目录 0x01 MySQL注射的简单介绍 0x02 对于information_schema库的研究 0x03 注射第一步—— ...

  3. MySQL数据类型 int(M) 表示什么意思?详解mysql int类型的长度值问题

    MySQL 数据类型中的 integer types 有点奇怪.你可能会见到诸如:int(3).int(4).int(8) 之类的 int 数据类型.刚接触 MySQL 的时候,我还以为 int(3) ...

  4. Mysql常用show命令,show variables like xxx 详解,mysql运行时参数

    MySQL中有很多的基本命令,show命令也是其中之一,在很多使用者中对show命令的使用还容易产生混淆,本文汇集了show命令的众多用法. 详细: http://dev.mysql.com/doc/ ...

  5. 【文章阅读】详解MySQL数据类型

    详解MySQL数据类型 - 五月的仓颉 - 博客园 http://www.cnblogs.com/xrq730/p/8446246.html 注:对于MySQL的数据类型做了详细的讲解,这是我看过的最 ...

  6. 详解Mysql分布式事务XA(跨数据库事务)

    详解Mysql分布式事务XA(跨数据库事务) 学习了:http://blog.csdn.net/soonfly/article/details/70677138 mysql执行XA事物的时候,mysq ...

  7. 详解MySQL索引

    原文链接详解MySQL索引 索引介绍 索引是帮助MySQL高效获取数据的数据结构.在数据之外,数据库系统还维护着一个用来查找数据的数据结构,这些数据结构指向着特定的数据,可以实现高级的查找算法. 本文 ...

  8. 详解MySQL中EXPLAIN解释命令

    Explain 结果解读与实践   基于 MySQL 5.0.67 ,存储引擎 MyISAM .   注:单独一行的"%%"及"`"表示分隔内容,就象分开“第一 ...

  9. MySQL存储过程详解 mysql 存储过程(二)

    mysql存储过程详解 1.      存储过程简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL ...

随机推荐

  1. vs2015“当前不会命中断点 还没有为该文档加载任何符号”的解决方法

    解决方法:工具-选项-调试 -(启用“仅我的代码”)勾去掉

  2. eclipse中关闭java文件后再打开,找不到如何切换可视化编辑器

    http://www.iteye.com/problems/64806 两种方式:   第一种正如楼上的老兄说的.在该java类中,鼠标右击,移动到openWith上 找到jigloo,找不到就在ot ...

  3. 自动布局之-NSLayoutConstraint

    AutoLayout概念是苹果自iOS6开始引入的概念. 目前为止,实现自动布局技术选型方面也可以使用xib和storyboard.在开发过程中通常登录.注册等变动可能性较小的视图,我会采用xib开发 ...

  4. vi中系统剪切板的设置

    在vi中,如果编译时没有clipboard属性,将vi中的内容拷贝到系统剪切板有些麻烦.可以用如下的方法,查看vi 是否支持系统剪切板的功能: xt@xt-ThinkPad-X220:~$ vi -- ...

  5. Docker学习笔记--2 镜像的创建

    如果我们需要在Docker环境下部署tomcat.redis.mysql.nginx.php等应用服务环境,有下面三种方法: 1,根据系统镜像创建Docker容器,这时容器就相当于是一个虚拟机,进入容 ...

  6. Window_Bat_Scripts—检测特定网段未使用的IP地址

    1.1    脚本名称 Check_IP_Not_Use.bat 1.2    脚本代码 @Echo off set /p input_number=请输入网络位(192.168.1.): IF EX ...

  7. swoole 连接池

    proxy_pool.php <?php class ProxyServer { protected $frontends; protected $backends; /** * @var sw ...

  8. WebSocket 详解

    WebSocket 出现前 构建网络应用的过程中,我们经常需要与服务器进行持续的通讯以保持双方信息的同步.通常这种持久通讯在不刷新页面的情况下进行,消耗一定的内存资源常驻后台,并且对于用户不可见.在 ...

  9. 最新手机号正则表达式php包括166等号段

    if(!preg_match("/^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|166|198|199|(147)) ...

  10. jupyter notebook(二)——修改jupyter打开默认的工作目录

    1.简述 jupyter notebook,启动后,浏览器发现工作目录并不是自己真正的代码的工作路径.所以需要设置一下.这样方便自己快捷使用. 2.设置修改jupyter notebook打开后默认工 ...