• MySQL的event的使用方法


    MySQL的event的使用方法

    一、事件定时策略

    1、查看event事件开启状态
    SHOW VARIABLES LIKE 'event_scheduler';
    
    • 1

    在这里插入图片描述
    如图,Value值 ON:打开,OFF:关闭。

    2、设置event事件打开
    SET GLOBAL event_scheduler = ON;
    
    • 1

    如果MySQL重启了,event会默认关闭,需要重新设置。

    可在my.cnf配置文件里的【mysqld】增加 event_scheduler = ON(永久开启,设置后需要重启MySQL才会生效)

    3、设置event事件关闭
    SET GLOBAL event_scheduler = OFF;
    
    • 1

    二、定时任务说明

    -- 创建定时任务
    CREATE EVENT my_event
    ON SCHEDULE
    EVERY '1' DAY STARTS '2023-01-01 01:00:00'
    DO CALL my_event()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    解释:
    1、create event my_event:定义事件名称,名为my_event
    2、EVERY '1' DAY:周期定时的规则,每天执行一次
    3、STARTS '2023-01-01 01:00:00':表示在具体执行开始时间,2023-01-01凌晨1点整开始执行
    4、可选 on completion preserve disable:表示创建后并不开始生效。
    5、do call my_event():该event(事件)的操作内容,这里是调用名为my_event()的存储过程
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    三、定时任务说明

    1、查看所有event
    SELECT * FROM information_schema.EVENTS where EVENT_SCHEMA = 'my_db';
    
    • 1
    SELECT EVENT_NAME, EVENT_DEFINITION, INTERVAL_VALUE, INTERVAL_FIELD, STATUS FROM INFORMATION_SCHEMA.EVENTS;
    
    • 1
    2、查看指定event
    SHOW CREATE EVENT MY_EVENT;
    
    • 1

    在这里插入图片描述

    3、修改指定event
    -- 修改定时任务 2点执行 调用my_event_bak()存储过程
    ALTER EVENT my_event
    ON SCHEDULE
    EVERY '1' DAY STARTS '2023-01-01 02:00:00'
    DO CALL my_event_bak()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    4、开启指定event
    //开启定时任务
    alter event my_event on completion preserve enable;
    
    • 1
    • 2
    5、关闭指定event
    //关闭定时任务
    alter event my_event on completion preserve disable;
    
    • 1
    • 2
    6、删除指定event
    //删除定时任务
    drop event my_event ;
    
    • 1
    • 2
    7、定时规则
    7.1、执行周期(EVERY)

    参数单位有:second、minute、hour、day、week(周)、quarter(季度)、month、year

    //每天执行1次
    on schedule every 1 day
    //每周执行1次
    on schedule every 1 week
    //每月执行1次
    on schedule every 1 month
    //每年执行1次
    on schedule every 1 year
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    7.2、执行开始时间(AT)
    // 当前时间5天后执行
    on schedule at current_timestamp() + interval 5 day
    // 在2023年1月1日,凌晨1点整执行
    on schedule at '2023-01-01 01:00:00'
    
    • 1
    • 2
    • 3
    • 4
    7.3、执行时间段(STARTS ENDS)
    //3天后开始每天都执行一次到下个月底结束
    on schedule every 1 day starts current_timestamp() + interval 3 day ends current_timestamp() + interval 1 month 
    
    //从现在起每天执行,执行3天
    on schedule every 1 day ends current_timestamp() + interval 3 day 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    参考链接:

    1、https://zhuanlan.zhihu.com/p/619128134
    2、https://www.jb51.net/database/28534927c.htm

    如有不正确之处,还望指正!书写不易,觉得有帮助就点个赞吧!☺☺☺

  • 相关阅读:
    SpringCloud——网关Gateway
    软考高级系统架构设计师系列论文二十八:论需求分析方法及应用
    用Python进行数学建模(一)
    kali搭建vulhub漏洞靶场
    TiDB 热点问题处理
    SpringBoot集成Lettuce客户端操作Redis
    USACO 2021 December Contest, Silver
    深度学习目标检测模型综述
    VS Code配置c++环境
    华为云Stack南向开放框架,帮助生态伙伴高效入云
  • 原文地址:https://blog.csdn.net/qq_38254635/article/details/134204438