欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

mysql 定时任务的实现与使用方法示例

程序员文章站 2023-11-09 18:44:28
本文实例讲述了mysql 定时任务的实现与使用方法。分享给大家供大家参考,具体如下: mysql5.1.6增加了一个事件调度器(event scheduler),可以做定时任务(定时...

本文实例讲述了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());

 mysql 定时任务的实现与使用方法示例

我们指定时间来向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 定时任务的实现与使用方法示例