转:http://www.linuxidc.net/thread-3638-1-1.html
http://www.th7.cn/db/mysql/201305/30302.shtml
http://www.2cto.com/database/201108/101036.html
自MySQL5.1.6起,增加了一个非常有特色的功能–事件调度器(Event Scheduler),可以用做定时执行某些特定任务(例如:删除记录、对数据进行汇总等等),来取代原先只能由操作系统的计划任务来执行的工作。更值得一提的是MYSQL的事件调度器可以精确到每秒钟执行一个任务,而操作系统的计划任务(如:Linux下的CRON或Windows下的任务计划)只能精确到每分钟执行一次。对于一些对数据实时性要求比较高的应用(例如:股票、赔率、比分等)就非常适合。
1、创建一个每隔10秒往t1表中插入一条数据的事件
CREATE EVENT IF NOT EXISTS t1 ON SCHEDULE EVERY 10 SECOND
ON COMPLETION PRESERVE
DO INSERT INTO t1(name) VALUES('AAA');
2、开启Mysql的事件计划状态
开启: SET GLOBAL event_scheduler="ON"
关闭:SET GLOBAL event_scheduler="OFF"
Mysql事件查看及定时器相关操作
查看事件
SHOW EVENTS
select * from mysql.event
查看是否开启定时器
SHOW VARIABLES LIKE 'event_scheduler';
开启定时器 0:off 1:on
SET GLOBAL event_scheduler = 1; .
删除
drop EVENT *_event;
创建
CREATE EVENT IF NOT EXISTS *_event_test
ON SCHEDULE every 1 Hour
DO CALL update_*_proc();
或者
CREATE EVENT IF NOT EXISTS update_*_event
ON SCHEDULE every 1 DAY STARTS TIMESTAMP(CURRENT_DATE,'00:05:00')
ON COMPLETION PRESERVE ENABLE
DO CALL update_*_proc();
date_add(date(curdate() + 1),interval 8 hour)