通过实例解说mysql怎样实现按时任务
自MySQL5.1.6起,增添了一个非常有特点的功效-事件调度器(Event Scheduler),可以用做按时施行某些特定任务(例如:删除记载、对数据停止汇总、数据备份等等),来代替本来只能由操纵系统的方案任务来施行的工作。
更值得一提的是MySQL的事件调度器可以准确到每秒钟施行一个任务,而操纵系统的方案任务(如:Linux的cron或Windows下的任务方案)只能准确到每分钟施行一次。关于一些对数据实时性要求比力高的利用(例如:股票、赔率、比分等)就非常适合。
事件调度器有时也可以称为暂时触发器(temporal triggers),由于事件调度器是基于特按时间周期触发来施行某些任务,而触发器(Triggers)是基于某个表所发生的事件触发的,不同也就在这里。
一、查看可否开启
> show variables like 'event_scheduler';
二、开启事件调度器
set global event_scheduler = on;
这里的设定,当mysql重新启动后,又会主动关闭。假如需要不断开启,需要在my.ini中配置如下:
(引荐学习视频教程:mysql视频教程)
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());
结果如图:
相关文章教程引荐:mysql教程
以上就是通过实例讲解mysql怎样实现按时任务的具体内容,更多请关注百分百源码网其它相关文章!