mysql 定时任务的实现与使用方法示例
本文实例讲述了mysql定时任务的实现与使用方法。分享给大家供大家参考,具体如下:
mysql5.1.6增加了一个事件调度器(EventScheduler),可以做定时任务(定时删除记录,定时数据统计),取代之前系统的计划任务。mysql事件调度器可以精确到每秒执行一个任务。
事件调度器与触发器的区别:事件调度器是基于特定时间周期来触发执行某些任务,触发器是基于某个表产生的事件来触发。
一、查看是否开启
>showvariableslike'event_scheduler';
二、开启事件调度器
setglobalevent_scheduler=on;
这里的设置,当mysql重启后,又会自动关闭。如果需要一直开启,需要在my.ini中配置如下:
event_scheduler=on
三、创建事件语法
CREATEEVENT[IFNOTEXISTS]event_name ONSCHEDULEschedule [ONCOMPLETION[NOT]PRESERVE] [ENABLE|DISABLE] [COMMENT'注释'] DOSQL语句; schedule:ATTIMESTAMP[+INTERVALinterval]|EVERYinterval[STARTSTIMESTAMP][ENDSTIMESTAMP] 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:执行时间。
[ONCOMPLETION[NOT]PRESERVE]:事件是否需要复用。
[ENABLE|DISABLE]:事件开启或关闭。
四、关闭事件
ALTEREVENTevent_nameDISABLE;
五、开启事件
ALTEREVENTevent_nameENABLE;
六、删除事件
DROPEVENT[IFEXISTS]event_name;
七、查看所有事件
SHOWEVENTS;
八、事件例子
我们先创建一个简单的test表用于测试
CREATETABLE`test`( `id`int(11)unsignedNOTNULLAUTO_INCREMENTCOMMENT'ID', `now`datetimeDEFAULTNULLCOMMENT'时间', PRIMARYKEY(`id`) )ENGINE=InnoDBDEFAULTCHARSET=utf8;
事件类型有两种,一种是间隔触发,一种是特定时间触发
我们每隔一秒向test表插入一条记录:
DROPEVENTIFEXISTSevent_test; CREATEEVENTevent_test ONSCHEDULEEVERY1SECONDSTARTS'2017-08-2211:57:00'ENDS'2017-08-2212:00:00' ONCOMPLETIONPRESERVE ENABLE COMMENT'每隔一秒向test表插入记录' DOINSERTINTOtestVALUES(NULL,now());
我们指定时间来向test表插入一条记录:
DROPEVENTIFEXISTSevent_test2; CREATEEVENTevent_test2 ONSCHEDULEAT'2017-08-2212:01:00' ONCOMPLETIONPRESERVE ENABLE COMMENT'指定时间向test表插入记录' DOINSERTINTOtestVALUES(999999,now());
更多关于MySQL相关内容感兴趣的读者可查看本站专题:《MySQL查询技巧大全》、《MySQL事务操作技巧汇总》、《MySQL存储过程技巧大全》、《MySQL数据库锁相关技巧汇总》及《MySQL常用函数大汇总》
希望本文所述对大家MySQL数据库计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。