zoukankan      html  css  js  c++  java
  • mysql 定时任务的使用

    mysql5.1.6增加了一个事件调度器(Event Scheduler),可以做定时任务(定时删除记录,定时数据统计),取代之前系统的计划任务。mysql事件调度器可以精确到每秒执行一个任务。

    事件调度器与触发器的区别:事件调度器是基于特定时间周期来触发执行某些任务,触发器是基于某个表产生的事件来触发。

    一、查看是否开启

    > show variables like 'event_scheduler';

    二、开启事件调度器

    set global event_scheduler = on;

     这里的设置,当mysql重启后,又会自动关闭。如果需要一直开启,需要在my.ini中配置如下:

    event_scheduler = on

    三、创建事件语法

    CREATE EVENT [IF NOT EXISTS ] event_name 
    ON SCHEDULE schedule 
    [ ON COMPLETION [ NOT ] PRESERVE ] 
    [ ENABLE | DISABLE ] 
    [ COMMENT '注释' ] 
    DO SQL语句;
    
    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 }

    event_name:事件名,最大长度64个字符。

    schedule:执行时间。

    [ ON COMPLETION [ NOT ] PRESERVE ] :事件是否需要复用。

    [ ENABLE | DISABLE ] :事件开启或关闭。

    四、关闭事件

    ALTER EVENT event_name DISABLE;
    

    五、开启事件

    ALTER EVENT event_name ENABLE;
    

    六、删除事件

    DROP EVENT [IF EXISTS ] event_name;

    七、查看所有事件

    SHOW EVENTS; 

    八、事件例子

    我们先创建一个简单的test表用于测试

    CREATE TABLE `test` (
      `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
      `now` datetime DEFAULT NULL COMMENT '时间',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    

    事件类型有两种,一种是间隔触发,一种是特定时间触发

    我们每隔一秒向test表插入一条记录:

    DROP EVENT IF EXISTS event_test;
    CREATE EVENT event_test 
    ON SCHEDULE EVERY 1 SECOND STARTS '2017-08-22 11:57:00' ENDS '2017-08-22 12:00:00'
    ON COMPLETION PRESERVE 
    ENABLE 
    COMMENT '每隔一秒向test表插入记录'
    DO INSERT INTO test VALUES(NULL, now());
    

    我们指定时间来向test表插入一条记录:

    DROP EVENT IF EXISTS event_test2;
    CREATE EVENT event_test2
    ON SCHEDULE AT '2017-08-22 12:01:00'
    ON COMPLETION PRESERVE 
    ENABLE 
    COMMENT '指定时间向test表插入记录'
    DO INSERT INTO test VALUES(999999, now());
    

  • 相关阅读:
    redis集群报错,(error) MOVED 15495 127.0.0.1:7003
    在云服务器上时候,我关闭了防火墙还是不能连接!
    redis 集群安装 3主3从3台云主机
    ajax完成团队信息异步添加【实际项目】
    众创项目首页推荐需求
    添加删除表格(js完成)【自己实际项目】
    【JPA 级联保存/级联删除】@OneToMany (双向) 一对多【转】
    页面提交 string数组和list对象集合举例
    Form表单如何传递List数组对象到后台的解决办法(转)
    实现同时提交多个form(基础方法) 收集(转)
  • 原文地址:https://www.cnblogs.com/jkko123/p/7410974.html
Copyright © 2011-2022 走看看