mysql event schedule

        today is so lovely.

—————————————– mysql event schedule start ————–

事件调度器(Event Scheduler)是在MySQLv5.1.6中新增的一个功能,它相当于一个定时器,可以在指定的时间点执行一条SQL语句或一个语句块,也可以用于在固定间隔重复执行。 MySql的事件调度器可以精确到秒,对于一些实时性要求较高的数据处理非常有用。

1.查看是否开启
show variables like ‘%sche%’;
若为off,则说明没有开启。

2.开启
①临时开启,重启mysql则无效。
set global event_scheduler =1;

②修改mysql配置文件永久有效

      window下,进入mysql安装目录下的my.ini,在【msyqld 】部分下加入
      event_scheduler = 1
      linux下,进入/etc/my.cnf下,在【msyqld 】部分下加入
      event_scheduler = 1

3. 规则

新增

    CREATE
      [DEFINER = { user | CURRENT_USER }]
      EVENT
      [IF NOT EXISTS]
      event_name
      ON SCHEDULE schedule
      [ON COMPLETION [NOT] PRESERVE]
      [ENABLE | DISABLE | DISABLE ON SLAVE]
      [COMMENT 'comment']
      DO event_body;

在以上语句中,包含以下参数:
1、event_name - 事件名,可以是任何合的MySql标识符,不能超64个字符。
创建事件时,可以同时指定Schema,语法结构为:schema_name.event_name
2、schedule - 调度规则,规定事件的执行时间与执行规则。是一个可包含以下值的子语句:

schedule:
    AT timestamp [+ INTERVAL interval] ...
   |  EVERY interval
   [STARTS timestamp [+ INTERVAL interval] ...]
   [ENDS timestamp [+ INTERVAL interval] ...]

interval:
   quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
      WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |
      DAY_SECOND | HOUR_MINUTE | HOUR_SECOND |        MINUTE_SECOND}

3、event_body - 事件体,可以是单行SQL语法,或是BEGIN……END语句块
查看已创建的事件

   SHOW EVENTS;    ||    SELECT * FROM information_schema.EVENTS;

查看某一个事件

   SELECT * FROM information_schema.EVENTS where EVENT_NAME = "yu";

4.简单使用
insert 的sql 语句会在创建后,每分钟执行一次。

     CREATE EVENT   IF NOT EXISTS  yu
          ON SCHEDULE
          EVERY 1 MINUTE
          STARTS CURRENT_TIMESTAMP
          DO
           insert into yi.info (name,subject,score) values("test","test","100");

需要间隔一定时间再开启事务,如,1天后开启,十天后结束

CREATE EVENT IF NOT EXISTS  yu
  ON SCHEDULE
  EVERY 1 MINUTE
  STARTS CURRENT_TIMESTAMP  + INTERVAL 1 DAY
  ENDS    CURRENT_TIMESTAMP  + INTERVAL 10 DAY
  DO
   insert into yi.info (name,subject,score) values("test","test","100");

在某个具体时刻清空表

CREATE EVENT IF NOT EXISTS yu
  ON SCHEDULE
  AT TIMESTAMP '2017-03-11 12:37:00'
  DO TRUNCATE TABLE yi.info;

每天零点清空表

CREATE EVENT IF NOT EXISTS yu
  ON SCHEDULE
  EVERY 1 DAY
  STARTS '2016-08-22 00:00:00'
  ENDS '2017-08-22 00:00:00'
  DO
  TRUNCATE TABLE  yi.info;

5.开启关闭删除某个事件
①开启
ALTER EVENT yu ON COMPLETION PRESERVE ENABLE;
②关闭
ALTER EVENT yu ON COMPLETION PRESERVE DISABLE;
③删除
DROP EVENT IF EXISTS yu;

6.参考链接
详解MySQL用事件调度器Event Scheduler创建定时任务
Mysql事件学习 AND MySQL计划任务(事件调度器)(Event Scheduler)

                                                                            by  yu

—————————————– mysql event schedule end ————–

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值