加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

mysql 定时任务的达成与使用方法示例

发布时间:2022-03-12 13:09:45 所属栏目:编程 来源:互联网
导读:本文实例讲述了mysql 定时任务的实现与使用方法。分享给大家供大家参考,具体如下: mysql5.1.6增加了一个事件调度器(Event Scheduler),可以做定时任务(定时删除记录,定时数据统计),取代之前系统的计划任务。mysql事件调度器可以精确到每秒执行一个任务。
      本文实例讲述了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());
 
更多关于MySQL相关内容感兴趣的读者可查看本站专题:《MySQL查询技巧大全》、《MySQL事务操作技巧汇总》、《MySQL存储过程技巧大全》、《MySQL数据库锁相关技巧汇总》及《MySQL常用函数大汇总》
 
希望本文所述对大家MySQL数据库计有所帮助。

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读