MySQL定时器可以设置执行次数吗

MySQL定时器可以设置执行次数吗,第1张

mysql要实现定时执行sql语句就要用到Event

具体 *** 作如下:

先看看看event 事件是否开启

show variables like '%sche%'

如没开启,则开启。需要数据库超级权限

set global event_scheduler =1

创建存储过程 update_a (注:就是你要执行的sql语句)

mysql>create procedure update_a() update a set a.y_avg=(select avg(b.youhao) from b where a.a_id=b.a_id)

创建一个定时任务:event e_updateA

mysql>create event if not exists e_updateA

->on schedule every 60 second ---设置60秒执行一次

->on schedule at date_add(now(),interval 1 minute) ---在一分钟后执行

->on completion preserve

->do call update_a() ---执行update_a()存储过程

创建Event之后,sql语句就定时执行一次。

关闭事件任务

mysql如何查看定时器有没有执行1.查看是否开启evevt与开启evevt。1.1、MySQL evevt功能默认是关闭的,可以使用下面的语句来看evevt的状态,如果是OFF或者0,表示是关闭的。 show VARIABLES LIKE '%sche%'1.2、开启evevt功能SET GLOBAL event_scheduler = 12.创建定时器的过程2.1、创建测试表testdrop table if exists testcreate table test(id int(11) not null auto_increment primary key,time datetime not null) engine=innodb default charset=utf82.2、创建evevt要调用的存储过程test_procedelimiter //drop procedure if exists test_proce//create procedure test_proce()begininsert into test(time) values(now())end//delimiter 2.3、开启evevt(要使定时起作用,MySQL的常量GLOBAL event_scheduler必须为on或者是1)执行show variables like 'event_scheduler'查看evevt是否开启;若没开启执行set global event_scheduler='on'2.4、创建事件test_event(其作用:每隔一秒自动调用test_proce()存储过程)drop event if exists test_eventcreate event test_eventon schedule every 1 secondon completion preserve disabledo call test_proce()2.5、开启事件test_event

这种定时任务一般都是写shell脚本来解决,通过定时执行shell脚本来实现定时任务。

可以在shell脚本中,指定需要批量删除的数据库,将它们设置为变量,然后写清空表的语句,就可以实现定义在变量中的数据库批量删除。

你可以先写一个脚本进行测试,可以读取到一个数据库就行,然后将多个数据库放到数组中,循环遍历即可。

最后测试没问题的话,就可以将shell脚本添加到crontab定时任务中,就可以实现每2天定时清空数据表。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7180709.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-02
下一篇 2023-04-02

发表评论

登录后才能评论

评论列表(0条)

保存