Mysql数据库:添加定时任务并执行

一、开启定时任务

  1、查看event是否已开启:

SHOW VARIABLES LIKE '%event_sche%';

  OFF代表未开启,ON代表已开启。

  2、开启事件调度线程(事件计划):

SET GLOBAL event_scheduler = ON;

  mysql使用一个事件调度线程的特殊线程来执行所有调度事件,开启事件任务前需要开启该线程。

  3、关闭事件调度线程(事件计划):

SET GLOBAL event_scheduler = OFF;

  4、查看当前调度计划中已有的所有事件任务列表:

show events;

  5、开启事件任务: 

ALTER EVENT eventName ON COMPLETION PRESERVE ENABLE;

  6、关闭事件任务:

ALTER EVENT eventName ON COMPLETION PRESERVE DISABLE;

  开启和关闭事件任务语句中的eventName需更改为需要开启和关闭的任务名称,在事件任务列表中有名字显示。 

  

二、创建存储过程

  1、删除同名存储过程(重复执行语句时防止报错,每次先清除再重新生成):

DROP PROCEDURE IF EXISTS xxxxxxx;

  2、生成存储过程:

CREATE PROCEDURE xxxxxxx() 
BEGIN
    sssssssEND 

  其中xxxxxxx为存储过程名称,在编写定时任务时需调用,sssssss则为要执行的sql语句

三、创建定时任务

  1、删除同名定时任务(先清除再重新生成):

DROP EVENT IF EXISTS ttttttt;

  2、生成定时任务:

CREATE EVENT ttttttt 
ON SCHEDULE EVERY 1 DAY
STARTS TIMESTAMP '2022-07-05 00:00:00' ON COMPLETION PRESERVE
DO
BEGIN CALL xxxxxxx(); END

  在这段代码中:

  ttttttt定时任务名称;

  ON SCHEDULE:计划任务(分两种类型:AT代表一次性任务,在指定时间执行一次任务;EVERY代表重复性任务,每隔多久执行一次任务);

  1 DAY:可修改为其他数字和单位(当前是代表一天执行一次,可随意更换数字和单位,单位类型有YEAR,MONTH,DAY,HOUR,MINUTE,SECOND);

  STARTS:代表开始执行的时间,ENDS用法相同,代表结束执行的时间。后面跟随TIMESTAMP时间戳类型或者DATETIME时间格式类型;

  ON COMPLETION:当这个事件执行结束的时候(不会再发生的时候,如一次性执行结束或者重复性任务运行到结束时间,停止再执行);

  PRESERVE:保留该事件,搭配前面的语句,意思是当这个定时任务执行完了之后,不进行删除而是保留,类似于逻辑删除,可以作为历史数据进行查询;

  CALL:执行存储过程,搭配定时实现定时执行某个sql语句的效果,即定时任务。

  

  添加定时任务后需开启生效。

 

posted @ 2022-07-04 13:37  我命倾尘  阅读(3504)  评论(0编辑  收藏  举报