mysql触发器主机自动增长_mysql的触发器以及事件调度器实现定时更新数据库

最近项目中需要实现一个功能,定时更新数据库中不正常的数据,因为服务器是windows的,所以linux的crontab不可用,而windows的bat调用感觉不太好,框架用的是tp5,tp框架定时任务总是要主动触发才能生效,所以最终选择了mysql的事件调度器结合触发器实现。

1:查看mysql是否开启了事件,如果是OFF或者0,表示是关闭的。show VARIABLES LIKE '%sche%';      //查看状态SET GLOBAL event_scheduler = 1       //开启

2:创建event要调用的存储过程demo-procedelimiter //

drop procedure if exists demo_proce//

create procedure demo_proce()

begin

update demo set status=0 where (status=1) and (unix_timestamp(now()) -modify_time)>30;

end//

delimiter ;

3:创建事件demo_event(每10秒自动调用存储过程)create event demo_event

on schedule every 10 second

on completion preserve disable

do call demo_proce();

4:开启事件demo_eventalter event demo_event on completion preserve enable;

5:关闭事件demo_eventalter event demo_event on completion preserve disable;

6:查看创建的eventselect * from mysql.event;

整个过程大概就是这样的,经过测试能用,但是不知道执行效率怎么样,也不知道怎么测试同linux的定时任务效率,但是感觉应该执行效率会好点,因为mysql的底层是c语言开发的,每次操作sql语句,要先编译成c语言,但是结合了存储过程,只需要编译一次就可以了,所以从这方面来看,使用事件调度效果会好些。(其实我是菜鸟,瞎猜的)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值