mysql 中定时任务event的创建
来源:互联网 发布:动态ppt软件 编辑:程序博客网 时间:2024/05/21 09:36
以前一直使用quartz创建定时任务,但是有时候定时任务一多,总感觉在某个时间段内集中进行定时任务会对tomcat造成比较大的压力(对不起,这是我猜的。。。),所以后来就发现mysql 在5.1之后新增了事件调度器(Event Scheduler)。而且如果是定时调用一个存储过程,会比使用quartz简单的多。
①查看event是否开启:
如果是OFF,则代表关闭。
开启事件调度的方法:
func1.执行:SET GLOBAL event_scheduler = 1 ;
或:SET GLOBAL event_scheduler = ON ;
func2.在my.cnf中(windows环境下是my.ini)修改[mysqld]下的配置:--event_scheduler=1。
②创建事件:
语法:
CREATE EVENT [IF NOT EXIST] event_name
ON SCHEDULE schedule
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE]
[COMMNET 'comment']
DO sql_statement ;
[ON COMPLETION [NOT] PRESERVE]可以设置这个事件是执行一次还是持久执行,默认为NOT PRESERVE。
其中语法中的'schedule'代表的是要定时执行的时间
schedule:
AT TIMESTAMP [+INTERVAL INTERVAL]
| EVERY INTERVAL [STARTS TIMESTAMP] [END 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}
DO后边的语句是要执行的任务,可以是一个sql语句,也可以是存储过程等。
③查看意创建的定时任务:(此时需要root授权)
func1:SELECT * FROM mysql.event ;
func2:SHOW EVENTS ;
func3:SHOW CREATE EVENT event_nam;此时可查看详细的任务内容,如:SHOW CREATE EVENT e_cancel_foodorder ;
④开启定时任务:
ALTER EVENT e_cancel_foodorder ON COMPLETION PRESERVE ENABLE ;
⑤关闭定时任务:
ALTER EVENT e_cancel_foodorder ON COMPLETION PRESERVE DISABLE ;(如果将此event执行了关闭后,重启mysql会删除掉该定时任务)
⑥修改定时任务:
ALTER EVENT e_cancel_foodorder ON SCHEDULE EVERY 5 DAY ;(将每天执行修改为5天执行一次)
⑦删除定时任务:
DROP EVENT [IF EXISTS] event_name ;
⑧创建定时任务的示例:
每分钟执行一次:
CREATE EVENT `e_cancel_foodorder`
ON SCHEDULE EVERY 1 MINUTE
DO UPDATE food_order set status=8 WHERE status=2 AND TIMESTAMPDIFF(MINUTE,time2,NOW())>10 ;
EVERY 后面的是时间间隔,可以选 1 second,3 minute,5 hour,9 day,1 month,1 quarter(季度),1 year
每天0点1分定点执行:
CREATE EVENT `e_cancel_foodorder`
ON SCHEDULE EVERY 1 DAY STARTS '2015-12-29 00:01:00'
DO UPDATE food_order set status=8 WHERE status=2 AND TIMESTAMPDIFF(MINUTE,time2,NOW())>10 ;
从现在开始每隔九天定时执行:
ON SCHEDULE EVERY 9 DAY STARTS NOW()
;
每个月的一号凌晨1 点执行
on schedule every 1 month starts date_add(date_add(date_sub(curdate(),interval day(curdate())-1 day),interval 1 month),interval 1 hour);
每个季度一号的凌晨1点执行
on schedule every 1 quarter starts date_add(date_add(date(concat(year(curdate()),'-',elt(quarter(curdate()),1,4,7,10),'-',1)),interval 1 quarter),interval 1 hour);
每年1月1号凌晨1点执行
on schedule every 1 quarter starts date_add(date_add(date(concat(year(curdate()),'-',elt(quarter(curdate()),1,4,7,10),'-',1)),interval 1 quarter),interval 1 hour);
0 0
- mysql 中定时任务event的创建
- mysql event 定时任务
- mysql 定时任务 event
- MySQL CREATE EVENT创建任务计划定时执行任务
- MySQL 事件调度器(Event Scheduler)创建定时任务
- MySQL数据库的分区表、存储过程、event定时任务的创建
- mysql event 实现定时任务
- Mysql定时任务(event)
- MySql 定时任务 Event Scheduler
- mysql event 定时更新任务
- MYSQL-定时任务(event)
- mysql创建定时任务
- mysql创建定时任务
- mysql创建定时任务
- mysql创建定时任务
- mysql 定时任务创建
- mysql创建定时任务
- mysql创建定时任务
- java 计算时间差,还剩下xx天xx小时xx分xx秒
- <c:set> -----------JSTL
- 大数据课程体系-学习笔记-第一阶段-Java Reflect
- JavaScript权威指南_第八章:函数
- AndroidManifest.xml文件解析
- mysql 中定时任务event的创建
- 如何查看本机在以太网中的地址
- 自学-spring-quartz 进行整合-02
- PowerPC cache相关常用指令总结
- 【算法总结】 排列组合问题 - backtracking
- [翻译]mongodb日志分析工具mtools之mplotqueries
- 浅谈iClient for javascript 要素图层
- PipedOutputStream 和 PipedInputStream
- iOS提交遇到的新问题