mysql——event定时任务

一、引言


      最近要将数据库里每小时记录的原始数据分别按照天、周、月进行处理,然后用于统计分析,抽象出来就是一个定时任务处理的功能,然后自己寻找了一些方法,有了这篇文章==



二、定时任务方法


1、操作系统层面

      通常我们的服务器主要基于两大平台,一个windows server,它的定时任务系统有提供的。Linux下也有,通常流行的是cronta,但是crontab的定时任务通常定时操作脚本这样的文件,而直接定时操作数据库的就比较麻烦了。但是也有解决办法,就是在服务器端写一个get请求url,在后台里完成要定时完成的数据库操作,这样我们只要实现定时访问该接口就行了。其实这个我也没怎么用过,感觉不是特别能定制,so不太推荐使用。


2、程序层面

这个层面大家应该都懂的吧,想怎么做就怎么做,可以为所欲为,无非就是用个定时的库,然后写一个定时处理的程序把结果插入数据库==这个定制程度最高,不过付出的成本也最高==


3、数据库层面

      一言以蔽之,mysql从5.0开始自带了定时事件操作==其实跟trigger有点类似,都是执行的一些存储过程(函数),只不过调用的时候一个是根据操作,一个是根据时间==



三、mysql定时任务event实现


1、开启事件计划功能


  • 查看是否开启

show variables like '%event_sche%';

  • 开启事件计划

set global event_scheduler=1;

如果要想数据库重启后也可以让event_scheduler开启,则需要在配置文件my.ini的设置。修改如下,然后重启mysql服务即可。

[mysqld]
event_scheduler=ON //这一行加入mysqld标签下


2、创建存储过程


    这个大家就都比较熟悉了

create procedure test()
begin
INSERT INTO qwe (number,time) SELECT SUM(number),NOW() FROM ttest where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= DATE(time);
end


3、创建定时任务


    每一秒钟运行一次上面的存储过程

create event first_event
on schedule every 1 second
on completion preserve disable
do call test();


4、开启定时任务


alter event second_event on completion preserve enable;//开启定时任务
alter event second_event on completion preserve disable;//关闭定时任务

      然后比较复杂的事件设定功能大家可以去看下官网点击打开链接,这里只是介绍下基本使用,自己用还得结合业务哈==



四、总结


  • 数据库中定时任务处理需求引入;

  • 定时任务的方法;

  • mysql中event事件定时任务步骤;



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值