zoukankan      html  css  js  c++  java
  • MYSQL event_scheduler

    一、概述 
      事件调度器是在 MySQL 5.1 中新增的另一个特色功能,可以作为定时任务调度器,取代部分原先只能用操作系统任务调度器才能完成的定时功>能。例如,Linux 中的 crontabe 只能精确到每分钟执行一次,而 MySQL 的事件调度器则可以实现每秒钟执行一个任务,这在一些对实时性要>求较高的环境下就非常实用了。 

      事件调度器是定时触发执行的,在这个角度上也可以称作是"临时的触发器"。触发器只是针对某个表产生的事件执行一些语句,而事件调度器则是在某一个(间隔)时间执行一些语句。事件是由一个特定的线程来管理的,也就是所谓的"事件调度器"。启用事件调度器后,拥有 SUPER 权限的账户执行 SHOW PROCESSLIST 就可以看到这个线程了。通过设定全局变量event_scheduler 的值即可动态的控制事件调度器是否启用。 

    (root:localhost:)test> SET GLOBAL event_scheduler = ON; 
    (root:localhost:)test> show processlistG 
    *************************** 4. row *************************** 
         Id: 46147 
       User: event_scheduler 
       Host: localhost 
         db: NULL 
    Command: Daemon 
       Time: 1 
      State: Waiting on empty queue 
       Info: NULL 


      如上,该线程的所有者是 event_scheduler。 

      二、应用案例 

      本案例是利用 event scheduler 的特性,每秒钟调用一次存储过程,用于判断 SLAVE 是否正常运行,如果发现 SLAVE 关闭了,忽略 0 次错误,然后重新启动 SLAVE。 

      首先创建存储过程 

    delimiter // 
    create procedure `Slave_Monitor`() 
    begin 

    SELECT VARIABLE_VALUE INTO @SLAVE_STATUS 
    FROM information_schema.GLOBAL_STATUS 
    WHERE VARIABLE_NAME='SLAVE_RUNNING'; 

    IF ('ON' != @SLAVE_STATUS) THEN 
    SET GLOBAL SQL_SLAVE_SKIP_COUNTER=0; 
    SLAVE START; 
    END IF; 

    end; // 
    delimiter ; 



      由于存储过程中无法调用类似 SHOW SLAVE STATUS 这样的语句,因此无法得到确切的复制错误信息和错误代码,不能进一步的处理 SLAVE 停止的各种情况。 

      接着,创建任务 

    CREATE EVENT IF NOT EXISTS `Slave_Monitor` 
    ON SCHEDULE EVERY 5 SECOND 
    ON COMPLETION PRESERVE 
    DO 
    CALL Slave_Monitor(); 


      创建了一个任务,每 5秒钟 执行一次,任务结束后依旧保留该任务,而不是删除。当然了,在本例中的任务不会结束,除非将它手动禁止了。 

      如果在运行中想要临时关闭一下某个任务,执行 ALTER EVENT 语句即可: 

    (root:localhost:)test> alter event `Slave_Monitor` ON 
    COMPLETION PRESERVE DISABLE; 
    (root:localhost:)test> alter event `Slave_Monitor` ON 
    COMPLETION PRESERVE ENABLE; 

  • 相关阅读:
    Java实现 蓝桥杯VIP 算法训练 数的统计
    Java实现 蓝桥杯VIP 算法训练 和为T
    Java实现 蓝桥杯VIP 算法训练 友好数
    Java实现 蓝桥杯VIP 算法训练 连续正整数的和
    Java实现 蓝桥杯VIP 算法训练 寂寞的数
    Java实现 蓝桥杯VIP 算法训练 学做菜
    Java实现 蓝桥杯VIP 算法训练 暗恋
    Java实现 蓝桥杯VIP 算法训练 暗恋
    测试鼠标是否在窗口内,以及测试鼠标是否在窗口停留
    RichEdit 各个版本介绍
  • 原文地址:https://www.cnblogs.com/simplelogic/p/3230212.html
Copyright © 2011-2022 走看看