Mysql定时任务详情

Mysql定时任务

1.查看是否开启事件调度器:

SHOW VARIABLES LIKE ‘event_scheduler‘;   #没有开启则无法启用定时器(0代表:off,1代表:on)#若未开启则执行SET GLOBAL event_scheduler = ON;  #开启定时器

2.创建EVENT事件语法:

#例.每隔10秒执行一次

CREATE EVENT 定时器名称       #event事件名
ON SCHEDULE EVERY 10 SECODE    #每隔10秒调度一次(事件可以自行设置[例:MONTH,DAY,SECODE,......])
ON COMPLETION PRESERVE      #当本次event到期了,event会被disable,但是该event还是会存在
ENABLE                #开启event调度
DO
CALL 存储过程名();          #调度要定时执行的操作(调度任务调用上述创建的存储过程周期执行任务)

#例.每月的1月1日12时执行
CREATE EVENT 定时器名称   
ON SCHEDULE EVERY 1 MONTH STARTS DATE_ADD(DATE_ADD(DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE())-1 DAY), INTERVAL 1 MONTH),INTERVAL 12 HOUR)  #设置开始时间,间隔时间执行
ON COMPLETION PRESERVE   
ENABLE
DO
CALL 存储过程名();

注:存储过程可以参考本人上一篇https://www.cnblogs.com/Moming0/p/11428960.html

3.开启/关闭定时事件

#开启定时事件
ALTER EVENT 定时器事件名 ON
COMPLETION PRESERVE ENABLE;

#关闭定时事件
ALTER EVENT 定时器事件名 ON
COMPLETION PRESERVE DISABLE;

4.删除定时事件

DROP EVENT 定时事件名;

注:通过Navicat工具直接创建请参考本文https://blog.csdn.net/tantexian/article/details/50317829

原文地址:https://www.cnblogs.com/Moming0/p/11429833.html

时间: 2024-10-05 21:11:01

Mysql定时任务详情的相关文章

MySQL定时任务event,储存过程(定时删除指定时间前90天指定表的数据)

MySQL定时任务event,储存过程(定时删除指定时间前90天指定表的数据) 分类: MySql5.x2014-06-23 15:16 1266人阅读 评论(0) 收藏 举报 mysql数据库 [sql] view plaincopy <span style="font-family: 'Microsoft YaHei'; font-size: 14px;">MySQL定时任务event</span> 由于一些业务需求,我们可能需要定时清除数据库一些废弃的数据

mysql 定时任务和存储过程

mysql 定时任务和存储过程 最近在做日志系统,中间用到了 mysql, 其中有一个要求: 把数据库中 7天之后的日志清除了.看到 mysql 也支持 定时任务.于是就用 mysql 来做了.下面就是这次使用代码. 存储过程 use webapm; --创建存储过程 DELIMITER $$ CREATE PROCEDURE `p_del_slow`(IN `date_inter` INT) BEGIN DELETE FROM slow_duration WHERE (TO_DAYS(NOW(

mysql定时任务简单例子

? 1 2 3 4 5 6 7 8 9     如果要每30秒执行以下语句: [sql] update userinfo set endtime = now() WHERE id = '110';  可以给mysql建个定时任务,具体方法如下: [sql] delimiter //   /* 设定语句终结符为 //,因存储过程语句用;结束 */ 一.查看event是否开启 ? 1 2 3 4 5 [sql] show variables like '%sche%';  开启event_sched

mysql 定时任务的使用

mysql5.1.6增加了一个事件调度器(Event Scheduler),可以做定时任务(定时删除记录,定时数据统计),取代之前系统的计划任务.mysql事件调度器可以精确到每秒执行一个任务. 事件调度器与触发器的区别:事件调度器是基于特定时间周期来触发执行某些任务,触发器是基于某个表产生的事件来触发. 一.查看是否开启 > show variables like 'event_scheduler'; 二.开启事件调度器 set global event_scheduler = on; 这里的

mysql定时任务按天建表并跨库同步数据

创建定时任务完成:创建ASR识别记录表,每天自动从小云AI对话详情表同步数据.*/DROP PROCEDURE IF EXISTS `create_o_asr_record_call`;DELIMITER ;;CREATE PROCEDURE `create_o_asr_record_call`(IN `dayInt` bigint,out result int) COMMENT 'ASR识别结果表--按日--建表'BEGIN set @sql_tmp3 = CONCAT('create tab

mysql定时任务配置

做项目有时会遇到一些状态需要每天定时去维护,我的方案是写成sql语句或者存储过程,再配置mysql调度器让数据库每天去执行.废话不多说,直接进去正文: 假如当前时间是2016-12-28 12:05:00,你执行下面语句,等到12:10时,系统自动执行调度任务去往aaa表里insert一条记录. Select @@event_scheduler;#查看事件调度程序,如果是OFF,则执行下条语句SET GLOBAL event_scheduler = ON;#设置时间调度程序为ON#每天的2016

MYSQL 定时任务

设置定时任务时,首先将event_scheduler设置为1,以开启事件计划功能. 1.开启功能----------------------------------------执行命令 set global event_scheduler=1; select @@event_scheduler;----------------------------------------OR -----------------------------------------------------------

mysql定时任务用到存储过程和定时任务

需求: 需要将t_app_message中的消息(将要被发送的消息)给每一个学生发送一遍,并且在发送完成后,将消息置为已发送状态已发送状态. 一言不合上代码 1 /*删除存储过程*/ 2 drop procedure if exists proc_sendAllMsg; 3 /*创建存储过程*/ 4 CREATE PROCEDURE proc_sendAllMsg() 5 BEGIN 6 /*先插入*/ 7 INSERT t_base_message (sid,mid) 8 SELECT a.i

mysql定时任务event——清理过期数据 (转)

1.查询是否开启事件调度 SHOW VARIABLES LIKE 'event_scheduler'; 2.开启事件调度 临时: SET GLOBAL event_scheduler = 1; 永久: vim /etc/my.cnf event_scheduler=ON [mysqld]event_scheduler=ON //这一行加入mysqld标签下 3.创建p_del_count存储过程. 接收传入参数30并执行删除数据操作,删除大于30天的数据. drop procedure if e