MYSQL 定时自动执行EVENT
MySQL从5.1开始支持EVENT功能,类似Oracle和MSSQL的定时任务job功能。有了这个功能之后我们就可以让MySQL自动的执行存储过程来实现数据汇总等功能了,不用像以前哪样手动操作完成了。下面我们来测试下,在MYSQL中如何自动执行指定存储过程,实现相关功能。
一、创建测试表
CREATE TABLE EVENT_table(
id INT auto_increment PRIMARY KEY NOT NULL,
conent VARCHAR(80)
)ENGINE=INNODB DEFAULT CHARSET=utf8;
二、创建调用存储过程
DROP PROCEDURE IF EXISTS pr_event;
CREATE PROCEDURE pr_event(
)
proc_start:BEGIN
INSERT INTO EVENT_table(conent) VALUES ('520');
END proc_start
三、创建事件调用存储过程
创建事件语法:
CREATE EVENT [IF NOT EXISTS] event_name
ON SCHEDULE SCHEDULE
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE]
[COMMENT 'comment']
DO sql_statement;
要使定时事件起作用,MySQL的常量GLOBAL event_scheduler必须为on或者是1。
1、查看scheduler的当前状态:
a、SHOW VARIABLES LIKE 'event_scheduler';
b、SELECT @@event_scheduler;
2、修改scheduler状态为打开(0:off , 1:on):
SHOW VARIABLES LIKE 'event_scheduler';-- 查看是否开启定时器(OFF:关闭,ON:开启)
打开定时器(四种方式):
a、SET GLOBAL event_scheduler=ON;
b、SET @@global.EVENT_scheduler=ON;
c、SET GLOBAL event_scheduler=1;
d、SET @@global.event_scheduler=1;
3、创建事件,设置每10分钟执行一次(调用pr_event存储过程)。
CREATE EVENT IF NOT EXISTS ent_test
ON SCHEDULE EVERY 10 MINUTE
-- ON COMPLETION PRESERVE -- 当EVENT到期时,EVENT会被disable,但是该EVENT还是会存在
-- ON COMPLETION NOT PRESERVE -- 当EVENT到期时,该EVENT会被自动删掉,该项为默认值
DO CALL pr_event(); -- pr_event()为需要定时处理的存储过程,这里也可以改成相关SQL可执行语句
4、开启事件
ALTER EVENT ent_test ENABLE;
5、临时关闭事件
ALTER EVENT ent_test DISABLE;
6、重命名事件并加上备注
ALTER EVENT test.ent_test RENAME TO ent_test_new COMMENT '重命名事件ent_test';
7、删除事件
DROP EVENT IF EXISTS ent_test;
8、查看指定事件的详细信息
SELECT * FROM information_schema.EVENTS WHERE event_name='ent_test';
SELECT * FROM information_schema.EVENTS WHERE event_name LIKE CONCAT('%','ent_test','%');
9、查看事件的创建SQL语句
SHOW CREATE EVENT ent_test;
四、一些典型应用示例:
1、从现在开始每隔九天定时执行
CREATE EVENT EVENT1
ON SCHEDULE EVERY 9 DAY STARTS NOW()
ON COMPLETION PRESERVE ENABLE
DO
BEGIN
CALL TOTAL();
END
2、每个月的一号凌晨1 点执行
CREATE EVENT EVENT2
ON SCHEDULE EVERY 1 MONTH STARTS DATE_ADD(DATE_ADD(DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE())-1 DAY), INTERVAL 1 MONTH),INTERVAL 1 HOUR)
ON COMPLETION PRESERVE ENABLE
DO
BEGIN
CALL STAT();
END
3、每个季度一号的凌晨2点执行
CREATE EVENT TOTAL_SEASON_EVENT
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 2 HOUR)
ON COMPLETION PRESERVE ENABLE
DO
BEGIN
CALL SEASON_STAT();
END
4、每年1月1号凌晨四点执行
CREATE EVENT TOTAL_YEAR_EVENT
ON SCHEDULE EVERY 1 YEAR STARTS DATE_ADD(DATE(CONCAT(YEAR(CURDATE()) + 1,'-',1,'-',1)),INTERVAL 4 HOUR)
ON COMPLETION PRESERVE ENABLE
DO
BEGIN
CALL YEAR_STAT();
END
MySQL的event和Oralce的Job还是有点不同的,这点让笔者比较困扰
5、在进行按月,季,年进行自动调用存储过程时,为了测试可以把系统改为年的最后一天,如2010-12-31 23:59:55;
这个Oracle的Job就会把月,季,年存储过程执行一遍。但MySQL改了系统时间了Event也没有定时执行。不知道各位大虾有没有什么好办法?可以解决这个问题。
五、查看事件运行基本信息
SELECT * FROM information_schema.events ORDER BY last_executed DESC
本文参考:http://www.jz123.cn/text/1134105.html
http://blog.sina.com.cn/s/blog_5ceb51480101ndab.html
MYSQL 定时自动执行EVENT的更多相关文章
- mysql定时脚本(event),类似oracle的job
mysql定时脚本(event),类似oracle的job 我有2张表:tb_push_data 和 tb_push_data_log 现在需要每隔一段时间将tb_push_data 符合条件的 ...
- 转 Windows 7设置定时自动执行任务方法
在使用电脑的时候可能会遇到一些需要无人值守让电脑自行执行任务后定时关机的情形,在Win7系统中,我们可以使用"任务计划"设置功能结合 shutdown命令灵活设置任务计划,让Win ...
- SQL server 定时自动执行SQL存储过程
当一个存储过程是为了生成报表,并且是周期性的,则不需要人工干预,由SQL作业定时自动执行些SQL存储过程即可. 本示例,假设已需要定时执行的存储过程为:Pr_test 工具/原料 SQL Server ...
- Linux中的定时自动执行功能(at,crontab)
Linux中的定时自动执行功能(at,crontab) 概念 在Linux系统中,提供了两种提前对工作进行安排的方式 at 只执行一次 crontab 周期性重复执行 通过对这两个工具的应用可以让我们 ...
- windows下apache及mysql定时自动重启设置
有时候觉得,服务器运行时间过长,造成服务器内存等压力过大.因此,不用重新启动服务器的情况下,完成apache和mysql的内存释放,是非常有益处的(把重启时间设置在访问量最低的).首先,apache的 ...
- 服务器上定时自动执行php
两种方式: 一.Linux 服务器Linux原生支持crontab,所以可以利用这一功能做定时任务 步骤: 1.编辑crontab文件:Linux:crontab -e 2.输入代码:0 0 * * ...
- Linux下mysql定时自动备份并FTP到远程脚本
1.添加backupmysqleveryday.sh(vi /data/shell/backupmysqleveryday.sh) #!/bin/sh #this shell is user for ...
- windows系统mysql定时自动备份
MySQL Administrator 工具是MySQL官方的数据库管理工具,包含在MySQL GUI Tools中,可在MySQL官方网站下载到,下载地址:http://dev.mysql.com/ ...
- php定时自动执行 需启动第一次
1 2 3 4 5 6 7 8 9 10 11 12 <? ignore_user_abort(); //即使Client断开(如关掉浏览器),PHP脚本也可以继续执行. set_time_li ...
随机推荐
- gradle导出依赖的jar包
gradle导出依赖的jar包 http://blog.csdn.net/yuhentian/article/details/50426896
- HDU 5072 Coprime 同色三角形问题
好吧,我承认就算当时再给我五个小时我也做不出来. 首先解释同色三角形问题: 给出n(n >= 3)个点,这些点中的一些被涂上了红色,剩下的被涂上了黑色.然后将这些点两两相连.于是每三个点都会组成 ...
- [SCSS] Organize Styles with SCSS Nesting and the Parent Selector
SCSS nesting can produce DRYer code by targeting child elements without having to write the parent c ...
- EXTJS和javaweb应用的开发思路
近期.做些几个基于extjs界面的应用.在此.总结一下要点.标题是基于javaweb,可是基本上各种server端语言都适用.使用Extjs做界面,无非就是取消了原来非常多的jsp文件,转而使用Ext ...
- amazeui中内置的web组件有哪些且如何用
amazeui中内置的web组件有哪些且如何用 一.总结 一句话总结: 1.组件还是jquery.js+amazeui.js,和插件一样,准确的说是amazeui.css+jquery.js+amaz ...
- MAC终端:如何调整字体大小和终端样式
1.字体 进入终端后comman键和+键的组合可以增大显示 2.样式
- 电子商务系统的设计与实现(十三):分页组件,从前到后,从JS到Java
一.概述 学习实践Web开发5年多了,直到今天,我才算真正实现了最基本最常用的分页组件. 包括: a.前端JS异步加载并渲染: b.前端JSP.Freemarker.Struts标签渲 ...
- windows - Cygwin和MinGW有什么区别?(MinGW从Cygwin 1.3.3版本中分离出来)
windows - Cygwin和MinGW有什么区别? 我想让我的C ++项目跨平台,我正在考虑使用Cygwin / MinGW. 但是他们之间有什么区别呢? 另一个问题是,如果没有Cygwin / ...
- js 图片缩显
<script language="javascript"> var flag=false; function MyImage(Img){ var image=ne ...
- H∞一般控制问题的鲁棒叙述性说明
Robust Control System:反馈控制有承受一定类不确定能力的影响,这一直保持在这种不确定的条件(制)稳定.动态特性(灵敏度)和稳态特性(逐步调整)的能力. 非结构不确定性(Unstru ...