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. innobackupex基于binlog日志的恢复 -- 模拟slave恢复

    说明:一般来说,如果恢复的binlog量不大,可以使用此方法来恢复:mysqlbinlog /data/mysqlbak/binlogbak/restoredb-bin.000018 |mysql - ...

  2. vue组件 $children,$refs,$parent的使用

    如果项目很大,组件很多,怎么样才能准确的.快速的寻找到我们想要的组件了?? 1)$refs 首先你的给子组件做标记.demo :<firstchild ref="one"&g ...

  3. 2018.5.14 XML文档类型定义----DTD

    1.DTD概述 一个完全意义上的XML文件不仅仅是Well-fromed(格式良好的),而且还应该是使用了一些自定义的标记ValidatingXMl(有效的)文档也就是说他必须遵守文档类型的定义中已声 ...

  4. python_15_os

    import os #1. os.system('dir') #2 cmd_res=os.system('dir')#执行命令不保存结果 print("-------",cmd_r ...

  5. Servlet 的生命周期 及 注意事项 总结

    Servlet的生命周期 图解Servlet的生命周期 生命周期的各个阶段 实例化 :Servlet 容器创建 Servlet 的实例 初始化 :该容器调用init() 方法 请求处理 :如果请求Se ...

  6. Oracle Hint 之 Parallel

    强制启用oralce的多线程处理功能. 并行查询允许将一个sql select 语句划分为多个较小的查询,每个部分的查询并发的运行,然后将各个部分的结果组合起来,提供最终的结果,多用于全表扫描,索引全 ...

  7. java 程序设计第三次作业内容

    第一题:输出结果是什么? System.out.println("5+5="+5+5); 第二题:输出结果是什么? int a=3,b; b=a++; sop("a=&q ...

  8. cf550C. Divisibility by Eight(结论)

    题意 给出长度为$n$的字符串,判断是否能删除一些数后被$8$整除 Sol 神仙题啊Orz 结论: 若数字的后三位能被$8$整除,则该数字能被$8$整除 证明 设$x = 10000 * a_i + ...

  9. 揭密 Vue 的双向绑定

    Vue 中需要输入什么内容的时候,自然会想到使用 <input v-model="xxx" /> 的方式来实现双向绑定.下面是一个最简单的示例 剖析Vue原理& ...

  10. 【PHP】Thinkphp 七牛云API对接

    访问一个网站,图片的流量占的比例是非常高的!在你的服务器硬盘上,图片占的容量也是非常高的. 如果要搞一个图片非常多,用户量又很庞大的网站,那么,得花多少钱烧在服务器上? 这种时候,当然要用第三方图片存 ...