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. IOS PickerView使用

    - (void)viewDidLoad { [super viewDidLoad]; // 1.创建pickerview // pickerview有默认的frame UIPickerView *pi ...

  2. 设置meta标签 清除页面缓存,如:<meta http-equiv="Cache-Control" content="no-cache"/>

    <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" ...

  3. react的ant design的UI组件库

    PC官网:https://ant.design/ 移动端网址:https://mobile.ant.design/docs/react/introduce-cn antd-mobile :是 Ant ...

  4. Pots POJ - 3414 (搜索+记录路径)

    Pots Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 22688   Accepted: 9626   Special J ...

  5. ZRDay6A. 萌新拆塔(三进制状压dp)

    题意 Sol 这好像是我第一次接触三进制状压 首先,每次打完怪之后吃宝石不一定是最优的,因为有模仿怪的存在,可能你吃完宝石和他打就GG了.. 因此我们需要维护的状态有三个 0:没打 1:打了怪物 没吃 ...

  6. 【dp】奶牛家谱 Cow Pedigrees

    令人窒息的奶牛题 题目描述 农民约翰准备购买一群新奶牛. 在这个新的奶牛群中, 每一个母亲奶牛都生两个小奶牛.这些奶牛间的关系可以用二叉树来表示.这些二叉树总共有N个节点(3 <= N < ...

  7. Java 批量文件压缩导出,并下载到本地

    主要用的是org.apache.tools.zip.ZipOutputStream  这个zip流,这里以Execl为例子. 思路首先把zip流写入到http响应输出流中,再把excel的流写入zip ...

  8. 对比传统方式访问数据库和SpringData访问数据库

    我们在写代码的时候应该一边写一边测试,这样的话可以尽快的找到错误,在代码写多了之后去找错误的话不容易给错误定位 传统方式访问数据库 1:创建一个Maven web项目 2:修改pom.xml为以下内容 ...

  9. TCP/IP与OSI参考模型原理

    网络是很重要同时也是很难理解的知识,这篇文章将会用自己容易理解的方式来记录有关网络的tcp与osi模型内容,不求专业深刻,但求通俗易懂也好. OSI参考模型 OSI定义了网络互连的七层框架(物理层.数 ...

  10. shell 流水账

    在shell脚本运行时,会先查找系统环境变量ENV,该变量指定了环境文件(加载顺序通常是/etc/profile ~/.bash_profile ~/.bashrc /etc/bashrc) 设置全局 ...