原文:http://blog.csdn.net/lifuxiangcaohui/article/details/6583535

MySQL 定时器EVENT学习

MySQL从5.1开始支持event功能,类似oracle的job功能。有了这个功能之后我们就可以让MySQL自动的执行数据汇总等功能,不用像以前需要操作的支持了。如linux  crontab功能。

创建测试表
CREATE TABLE t
(
    v VARCHAR(100) NOT NULL
) ENGINE INNODB DEFAULT CHARSET=utf8;

创建定时器调用的存储过程
DELIMITER

DROPPROCEDUREIFEXISTSetest

CREATE PROCEDURE e_test() 
    BEGIN
        INSERT INTO t VALUES('1');
    END $$
    
DELIMITER ;
要使定时起作用MySQL的常量GLOBAL event_scheduler必须为on或者是1
-- 查看是否开启定时器
SHOW VARIABLES LIKE '%sche%';  

-- 开启定时器 0:off 1:on
SET GLOBAL event_scheduler = 1;  

-- 创建事件
--每隔一秒自动调用e_test()存储过程
CREATE EVENT IF NOT EXISTS event_test
ON SCHEDULE EVERY 1 SECOND
ON COMPLETION PRESERVE   
DO CALL e_test();

-- 开启事件
ALTER EVENT event_test ON    
COMPLETION PRESERVE ENABLE;   

-- 关闭事件
ALTER EVENT event_test ON    
COMPLETION PRESERVE DISABLE; 

SELECT * FROM t;

一些例子:

Sql代码
从现在开始每隔九天定时执行   CREATE  EVENT EVENT1     
ON SCHEDULE EVERY 9 DAY STARTS NOW()   ON COMPLETION PRESERVE ENABLE   DO       
BEGIN         CALL TOTAL();       END 
 
每个月的一号凌晨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        
 
每个季度一号的凌晨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          
 
每年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        
 

从现在开始每隔九天定时执行 CREATE EVENT EVENT1

ON SCHEDULE EVERY 9 DAY STARTS NOW() ON COMPLETION PRESERVE ENABLEDO

BEGIN CALL TOTAL(); END

每个月的一号凌晨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 ENABLEDO

BEGIN CALL STAT(); END

每个季度一号的凌晨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 ENABLEDO

BEGIN CALL SEASON_STAT(); END

每年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 ENABLEDO

BEGIN CALL YEAR_STAT(); END

MySQL的event和Oralce的Job还是有点不同的,这点让笔者比较困扰

在进行按月,季,年进行自动调用存储过程 时,为了测试可以 把系统改为年的最后一天,如2010-12-31 23:59:55;

这个Oracle的Job就会把月,季,年存储过程执行一遍。但MySQL改了系统时间了Event也没有定时执行。不知道各位大虾有没有什么好办法?可以解决这个问题。

MySQL 定时器EVENT学习的更多相关文章

  1. Mysql event学习

    我们可能比较熟悉crond,但是mysql也有一个自己的叫event,oracle的叫job. 开启mysql的event有很多种方法,和临时开启.我们在配置文件里面添加参数,随着服务一起开启. 在[ ...

  2. MySQL job/定时任务/event 学习

    参考文章: https://blog.csdn.net/qq_21108311/article/details/82589850 https://blog.csdn.net/qq_27238185/a ...

  3. mysql定时器Events

    MySQL定时器Events 一.背景 我们MySQL的表A的数据量已经达到1.6亿,由于一些历史原因,需要把表A的数据转移到一个新表B,但是因为这是线上产品,所以宕机时间需要尽量的短,在不影响数据持 ...

  4. MySQL数据库 Event 定时执行任务.

    一.背景 由于项目的业务是不断往前跑的,所以难免数据库的表的量会越来越庞大,不断的挤占硬盘空间.即使再大的空间也支撑不起业务的增长,所以定期删除不必要的数据是很有必要的.在我们项目中由于不清理数据,一 ...

  5. Mysql使用event,类似oracle job

    MySQL从5.1开始支持event功能,类似oracle的job功能.有了这个功能之后我们就可以让MySQL自动的执行数据汇总等功能,不用像以前需要操作的支持了.如linux crontab功能. ...

  6. mysql之event

    mysql之event http://blog.csdn.net/lxgwm2008/article/details/9088521 Mysql事件调度器(Event Scheduler)类似于定时器 ...

  7. mysql定时器,定时查询数据库,把查询结果插入到一张表中

    1.有两张表order_repayment_detail,msg_sim ,需要把前者中的按时间过滤出来的信息插入到短信发送表中,可以每晚12点钟查询执行一次查询. 创建存储过程,这里的存储过程主要提 ...

  8. 13本热门书籍免费送!(Python、SpingBoot、Entity Framework、Ionic、MySQL、深度学习、小程序开发等)

    七月第一周,网易云社区联合清华大学出版社为大家送出13本数据分析以及移动开发的书籍(Python.SpingBoot.Entity Framework.Ionic.MySQL.深度学习.小程序开发等) ...

  9. MySql定时器,亲测可用

    1. 查看数据库的event功能是否开启,在MySql中event默认是关闭的,需要查看并且要确保event处于开启状态 sql:show VARIABLES LIKE '%sche%'; 如果eve ...

随机推荐

  1. Argus

    Argus Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 10186 Accepted: 4801 Description A ...

  2. Linux的bg和fg命令简单介绍

    我们都知道,在 Windows 上面,我们要么让一个程序作为服务在后台一直运行,要么停止这个服务.而不能让程序在前台后台之间切换.而 Linux 提供了 fg 和 bg 命令,让我们轻松调度正在运行的 ...

  3. 遍历对象的list删除时报错问题。

    我们对一个对象的list或者map进行删除操作时,可能会这么写 for(Distributor distributor:distributorList){ String distributorShor ...

  4. Android开发之获取相册照片和获取拍照照片

    在Android的开发过程中,我们可能会读取手机里面的照片或者通过相机拍摄获取照片,这是两种常用的获取图片的方式,在做项目过程中也会经常遇到,下面来介绍一下这两种获取方式.. 1.从本地相册获取照片: ...

  5. 2017年1月7日 星期六 --出埃及记 Exodus 21:33

    2017年1月7日 星期六 --出埃及记 Exodus 21:33 "If a man uncovers a pit or digs one and fails to cover it an ...

  6. 2016年12月5日 星期一 --出埃及记 Exodus 20:26

    2016年12月5日 星期一 --出埃及记 Exodus 20:26 And do not go up to my altar on steps, lest your nakedness be exp ...

  7. python学习笔记五 模块上(基础篇)

    模块学习 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要 ...

  8. 配置 ASP.NET Linux( CentOS 6.5 ) 运行环境 MONO + Jexus

    1.更新系统 在命令行下执行 yum –y update 2.安装必要的软件 yum -y install gcc gcc-c++ bison pkgconfig glib2-devel gettex ...

  9. ContentProvider官方教程(5)ContentResolver插入、更新、删除 示例

    Inserting, Updating, and Deleting Data In the same way that you retrieve data from a provider, you a ...

  10. JAVA常用数据结构及原理分析

    JAVA常用数据结构及原理分析 http://www.2cto.com/kf/201506/412305.html 前不久面试官让我说一下怎么理解java数据结构框架,之前也看过部分源码,balaba ...