• 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());
    

  • 相关阅读:
    vue 使用 <iframe> 嵌入网页 地址实现动态配置
    vue 视频播放 vue-video-player
    vue 实现自定义序号, 并且翻页序号累加。
    关于 vue 使用 Handsontable 表格数据导出
    node.js Stream流的使用
    手把手教如何搭建node+egg项目 引入Sequelize
    实现 通过数据库里一个字段值相等 则把 他合为一条数据
    最近在项目中碰到把对象数组转为键值对,
    js 的数组怎么push一个对象. Js数组的操作push,pop,shift,unshift JavaScrip
    for循环
  • 原文地址:https://www.cnblogs.com/jkko123/p/7410974.html
Copyright © 2020-2023  润新知