zoukankan      html  css  js  c++  java
  • MySQL事件调度器

    MySQL 5.1 中新增了事件调度器这一个功能。可以实现类似于SQL Server的Job功能。

    1.语法

    CREATE EVENT [IF NOT EXISTS] event_name
    ON SCHEDULE schedule 
    [ON COMPLETION [NOT] PRESERVE]
    [ENABLE | DISABLE]
    [COMMENT 'comment']
    DO sql_statement;
    View Code

    其中schedule的语句可以表示为:

    AT TIMESTAMP [+ INTERVAL]
    | EVERY INTERVAL [STARTS TIMESTAMP] [ENDS TIMESTAMP]
    View Code

    interval的单位可以有如下几种:

    YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
    WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE | DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND
    View Code

    2.开启、关闭事件调度器

    查询event_scheduler是否开启.

    SHOW VARIABLES LIKE 'event_scheduler';
    或
    SELECT @@event_scheduler;
    或
    SHOW PROCESSLIST;
    View Code

    在使用这个功能之前必须确保event_scheduler已开启.

    /*开启*/
    SET GLOBAL event_scheduler = 1;
    --
    SET GLOBAL event_scheduler = ON;
    
    /*关闭*/
    SET GLOBAL event_scheduler = 0;
    --
    SET GLOBAL event_scheduler = OFF; 
    View Code

    3.示例

    创建测试数据库:

    CREATE TABLE tst_event (createtime DATETIME);
    View Code

    创建测试用存储过程:

    /*
    创建测试用存储过程
    */
    CREATE PROCEDURE msp_TestEvent()
    BEGIN
        INSERT INTO tst_event VALUES (CURRENT_TIMESTAMP);
    END
    View Code

    创建事件调度器:

    CREATE EVENT IF NOT EXISTS me_TestEvent
        ON SCHEDULE EVERY 10 SECOND 
        STARTS '2014-02-28 16:45:00' ENDS DATE_ADD('2014-02-28 16:46:00',INTERVAL 1 SECOND)
        DO CALL msp_TestEvent();
    View Code

    修改事件调度器:

    /*
    修改EVENT
    */ 
    ALTER EVENT me_TestEvent
        ON SCHEDULE EVERY 10 SECOND 
        STARTS '2014-02-27 16:45:00' ENDS DATE_ADD('2014-02-27 16:46:00',INTERVAL 1 SECOND)
        DO INSERT INTO tst_event VALUES (CURRENT_TIMESTAMP);
    View Code

    查看事件调度器:

    /*
    查看EVENT
    */   
    show events;
    --
    select * from information_schema.events 
    View Code

    4.不同时间间隔的调度: 

    一天后执行调度器:

    /*
    一天后执行调度器T
    */    
    CREATE EVENT e_TestEvent
    ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 DAY
    DO CALL msp_TestEvent();
    View Code

    2014-02-28日执行调度器:

    /*
    2014-02-28日执行调度器
    */    
    CREATE EVENT e_TestEvent
    ON SCHEDULE AT TIMESTAMP '2014-02-28 00:00:00'
    DO CALL msp_TestEvent();
    View Code

    每天执行调度器:

    /*
    每天执行调度器
    */    
    CREATE EVENT e_TestEvent
    ON SCHEDULE EVERY 1 DAY
    DO CALL msp_TestEvent();
    View Code

    一天后每天执行调度器:

    /*
    一天后每天执行调度器
    */    
    CREATE EVENT e_TestEvent
    ON SCHEDULE EVERY 1 DAY
    STARTS CURRENT_TIMESTAMP + INTERVAL 2 DAY
    DO CALL msp_TestEvent(); 
    View Code

    每天执行调度器,10天后停止:

    /*
    每天执行调度器,10天后停止
    */    
    CREATE EVENT e_TestEvent
    ON SCHEDULE EVERY 1 DAY
    ENDS CURRENT_TIMESTAMP + INTERVAL 10 DAY
    DO CALL msp_TestEvent(); 
    View Code

    一天后开始,每天执行调度器,10天后停止:

    /*
    一天后开始,每天执行调度器,10天后停止
    */    
    CREATE EVENT e_TestEvent
    ON SCHEDULE EVERY 1 DAY
    STARTS CURRENT_TIMESTAMP + INTERVAL 1 DAY
    ENDS CURRENT_TIMESTAMP + INTERVAL 10 MONTH
    DO CALL msp_TestEvent();
    View Code

    每天执行调度器,只执行一次:

    /*
    每天执行调度器,只执行一次
    */    
    CREATE EVENT e_TestEvent
    ON SCHEDULE EVERY 1 DAY
    ON COMPLETION NOT PRESERVE
    DO CALL msp_TestEvent(); 
    View Code

    5.删除调度器

    DROP EVENT [IF EXISTS] event_name
    View Code
  • 相关阅读:
    nohup 忽略 nohup.out 输出
    elementui 发送时间格式到 gin 后端问题
    在 Ubuntu 下使用 Puppeteer 时无法加载类库 libX11-xcb.so.1
    获取注解上的注解
    tomcat 远程 debug
    使用pytorch-lightning漂亮地进行深度学习研究(转)
    CTR预估模型发展历程(转)
    pytorch重要函数介绍
    Dataset和Dataloader
    推荐系统中的ID特征为什么有用?
  • 原文地址:https://www.cnblogs.com/ucos/p/3573220.html
Copyright © 2011-2022 走看看