MySQL 计划任务
时间:2010-07-16 来源:wubolu
官方手册:http://dev.mysql.com/tech-resources/articles/event-feature.html
MySQL 5.1以上版本支持event,先查看数据库是否开启计划认为:
mysql> show variables like '%event%'; +---------------------+-------+ | Variable_name | Value | +---------------------+-------+ | event_scheduler | OFF | +---------------------+-------+ |
使用下列的任意一句开启计划任务:
SET GLOBAL event_scheduler = ON;
SET @@global.event_scheduler = ON;
SET GLOBAL event_scheduler = 1; -- 0代表关闭
SET @@global.event_scheduler = 1;
创建event语法:
CREATE EVENT [ IF NOT EXISTS ] event_name
ON SCHEDULE AT|EVERY
[ ON COMPLETION [ NOT ] PRESERVE ]
[ ENABLED | DISABLED ] --状态,默认是有效状态。
[ COMMENT 'comment' ] --注释说明
DO sql_statement;
主要功能说明:
AT 表示指定一个时间只执行一次。
EVERY 周期性计划,可指定计划开始时间 STARTS 和结束时间 ENDS,执行具体时间周期可以为:YEAR, MONTH, WEEK, DAY, HOUR, MINUTE, SECOND。
COMPLETION 计划任务完毕后,该计划任务对象是否还在数据库中保留。默认不保留。
实例:
每5分钟删除sms表上面ybmid为空白且createdate距现时间超过5分钟的数据。
USE test;
CREATE EVENT event_delnull
ON SCHEDULE
EVERY 5 MINUTE STARTS '2010-07-10 00:00:00' ENDS '2011-02-10 00:00:00'
DO
DELETE FROM sms WHERE ybmid='' AND TIMEDIFF(SYSDATE(),createdate)>'00:05:00';
查看任务计划:
SELECT * FROM mysql.event\G