mysql计划任务 转

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

 

Event Scheduler作为一种数据库对象,其增删改的DDL语句与其他对象非常相似,无非CREATE、ALTER、DROP等,创建的基本语法是:

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

 

   例子

   1)创建一张表

  

   CREATE TABLE `aaa` (
   `timeline` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
   PRIMARY KEY (`timeline`)
   ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
   

   2) 创建事件

    每秒钟新增一条数据

   CREATE EVENT e_test_insert
   ON SCHEDULE EVERY 1 SECOND
   DO INSERT INTO test.aaa VALUES (CURRENT_TIMESTAMP);

   这里的时间点可以根据需要自己设定  

 

   3)开启事件

   ALTER EVENT e_test_insert ENABLE;

 

   4)关闭事件

   ALTER EVENT e_test_insert DISAVLE;

  

   5)删除事件

   DROP EVENT e_test_insert ;

   这里建议最好在加上 IF EXISTS    

   DROP EVENT IF EXISTS  e_test_insert ; 

 

 

应用

 

因at和every不能共用的。

 

首先查看event是否开启

  show variables like '%sche%';

将事件计划开户

  set global event_scheduler =1;

 

每个月1号凌晨3点的事件

create event e5

ON SCHEDULE EVERY 1 MONTH

STARTS DATE_ADD(DATE_ADD(DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE())-1 DAY), INTERVAL 1 MONTH),INTERVAL 3 HOUR)   ON COMPLETION PRESERVE ENABLE

DO

INSERT INTO test.aaa VALUES (CURRENT_TIMESTAMP);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值