码迷,mamicode.com
首页 > 数据库 > 详细

mysql定时器

时间:2015-07-14 18:18:38      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:mysql定时器

mysql定时器既是mysql的事件,在实际开发中,我们有时候需要定时去执行一些操作,大部分人通过ScheduledExecutorService类去创建定时,这种如果遇到大数据的更新的时候,运行速度比较忙,这时候我们可以考虑使用mysql定时器去执行SQL脚本文件。

要使用mysql定时器。

首先必须启动调度器“event_scheduler”。

查看当前是否已开启事件计划(调度器)有3种方法:

1)     SHOW VARIABLES LIKE ‘event_scheduler‘;

2)     SELECT @@event_scheduler;

3)     SHOW PROCESSLIST;

开启事件计划(调度器)开关有4种方法:

1)     SET GLOBAL event_scheduler = 1;

2)     SET @@global.event_scheduler = 1;

3)     SET GLOBAL event_scheduler = ON;

4)     SET @@global.event_scheduler = ON;

其次是创建定时器事件,可以通过sql创建,也可以安装Navicat Premium(mysql客户端)创建。

1)通过sql创建定时器事件:

create event if not exists eventJob 
on schedule every 2 second STARTS ‘2015-07-14 00:00:00‘
on completion PRESERVE 

ENABLE
do call mypro();

上述sql脚本中“eventJob ”为定时器事件名称,“mypro”为mysql函数或者存储过程。sql脚本表示从 ‘2015-07-14 00:00:00‘开始,每2秒钟执行mypro()函数一次。当然也可以设置结束时间。

2) 通过客户端创建定时器事件:

技术分享

如图中所示,call关键字后是需要执行的函数或者存储过程;状态表示定时器事件的状态,是否启用,enable表示启用,disable表示不启用,可以手动设置也可以通过sql来进行设置; on completion设置为“PRESERVE”。

技术分享

“计划”中标签中,主要是设置定时器的频率和开始结束时间。AT表示,从当前mysql数据库时间开始(这个时间是从启动器启用开始,即当状态为“ENABLE”时),根据一定频率的执行;EVERY是自定义开始时间和结束时间;相对来书EVERY比较灵活,使用方便。

最后,当然是设置定时器事件的状态。

在上一步中,我们无论是sql创建还是客户端创建都可以设置状态,但是当我们没有设置状态或者说关闭定时器事件的时候,就需要执行sql

ALTER EVENT eventJob ON  COMPLETION PRESERVE ENABLE;   ---- 开启事件
ALTER EVENT eventJob ON  COMPLETION PRESERVE DISABLE;  ---- 关闭事件

版权声明:本文为博主原创文章,未经博主允许不得转载。

mysql定时器

标签:mysql定时器

原文地址:http://blog.csdn.net/u010069220/article/details/46878819

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!