作/译者:叶金荣(Email: ),来源:http://imysql.cn,转载请注明作/译者和出处,并且不能用于商业用途,违者必究。

一、概述

事件调度器是在 MySQL 5.1 中新增的另一个特色功能,可以作为定时任务调度器,取代部分原先只能用操作系统任务调度器才能完成的定时功>能。例如,Linux 中的 crontabe 只能精确到每分钟执行一次,而 MySQL 的事件调度器则可以实现每秒钟执行一个任务,这在一些对实时性要>求较高的环境下就非常实用了。
事件调度器是定时触发执行的,在这个角度上也可以称作是
"临时的触发器"。触发器只是针对某个表产生的事件执行一些语句,而事件调度器则是在某一个(间隔)时间执行一些语句。事件是由一个特定的
线程来管理的,也就是所谓的
"事件调度器"。启用事件调度器后,拥有 SUPER 权限的账户执行 SHOW PROCESSLIST 就可以看到这个线程了。通过设定全局变量
event_scheduler 的值即可动态的控制事件调度器是否启用。
(root:localhost:)test> SET GLOBAL event_scheduler = ON;
(root:localhost:)test> show processlist\G
*************************** 4. row ***************************Id: 46147User: event_schedulerHost: localhostdb: NULL
Command: DaemonTime: 1State: Waiting on empty queueInfo: NULL
如上,该线程的所有者是 event_scheduler。

二、应用案例

本文不讨论详细的事件调度器的语法,具体的语法参考可以看MySQL手册 第20章。
本案例是利用 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) THENSET 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;
    本文出自 “MySQL中文网”博客 http://www.imysql.cn/

[MySQL 5.1 体验]MySQL 事件调度器(Event Scheduler)相关推荐

  1. mysql事件调度定时任务_详解MySQL用事件调度器Event Scheduler创建定时任务

    前言 事件调度器相当于操作系统中的定时任务(如:Linux中的cron.Window中的计划任务),但MySql的事件调度器可以精确到秒,对于一些实时性要求较高的数据处理非常有用. 1. 创建/修改事 ...

  2. mysql 事件 day hour_Mysql事件调度器(Event Scheduler)

    Mysql中的事件调度器Event Scheduler类似于linux下的crontab计划任务的功能,它是由一个特殊的时间调度线程执行的 一.查看当前是否开启了event scheduler三种方法 ...

  3. mysql查看执行计划任务_MySQL_MySQL计划任务(事件调度器) Event Scheduler介绍,要查看当前是否已开启事件调 - phpStudy...

    MySQL计划任务(事件调度器) Event Scheduler介绍 要查看当前是否已开启事件调度器,可执行如下SQL: SHOW VARIABLES LIKE 'event_scheduler'; ...

  4. MySQL事件调度器(Event Scheduler)介绍

    事件调度器是在 MySQL 5.1 中新增的另一个特色功能,可以作为定时任务调度器,取代部分原先只能用操作系统任务调度器才能完成的定时功能.而且 MySQL 的事件调度器可以实现每秒钟执行一个任务,这 ...

  5. mysql 事件调度器_【MySQL】事件调度器 (Event Scheduler)

    一 event 介绍 事件调度器是定时触发执行的,在这个角度上也可以称作是"临时的触发器".触发器只是针对某个表产生的事件执行一些语句,而事件调度器则是在某一个(间隔)时间执行一些 ...

  6. mysql originator_MySQL中的事件调度器EVENT

    MySQL中的事件调度器,EVENT,也叫定时任务,类似于Unix crontab或Windows任务调度程序. EVENT由其名称和所在的schema唯一标识. EVENT根据计划执行特定操作.操作 ...

  7. 一文详解MySQL中的事件调度器EVENT

    MySQL中的事件调度器,EVENT,也叫定时任务,类似于Unix crontab或Windows任务调度程序. EVENT由其名称和所在的schema唯一标识. EVENT根据计划执行特定操作.操作 ...

  8. php 事件调度,MySQL的事件调度器使用介绍

    自MySQL5.1.0起,增加了一个非常有特色的功能ndash;事件调度器(Event Scheduler),可以用做定时执行某些特定任务,可以看作基于 自MySQL5.1.0起,增加了一个非常有特色 ...

  9. mysql命令查看事件调度_mysql 5.1事件调度器 状态查看、开启命令,以及测试

    五.事件调度器测试 5.1.测试目的 5.1.1  配置方法 5.1.2  是否正常工作 5.1.3  日常的维护 5.2.事件调度器介绍 自MySQL5.1.6起,增加了一个非常有特色的功能–事件调 ...

最新文章

  1. 「消息队列」看过来!
  2. apply方法和call方法的详解2
  3. javascript 嵌入python_从Javascript代码调用Python函数
  4. Java常用知识整理
  5. codeforces 463A Caisa and Sugar 解题报告
  6. word排版案例报告_Word分节符的一些常见问题及解决办法
  7. c++实现maxpooling+利用OpenMP、SIMD优化代码
  8. 金陵科技学院c语言校内题库,金陵科技学院校内二级复习题
  9. 呼叫中心座席人员如何把控时间
  10. 教师资格证-教育知识与能力
  11. CentOS7配置sendmail发送QQ邮件
  12. docker部署html页面,在Docker容器中部署静态网页的方法教程
  13. 计算机工程ei是不是不检索了,EI检索的中文期刊_EI检索号查询_如何查询EI检索...
  14. 如何做一个小程序商城,需要多少钱
  15. 给图片添加多条文字水印和图片水印
  16. u盘文件看得见却打不开_U盘插入电脑能看到盘符但打不开怎么办
  17. 安卓中两种压缩图片详解(比例压缩与质量压缩)
  18. 单片机8x8点阵让数字0从右到左依次显示循环
  19. matlab中常微分方程数值计算的方法
  20. 解决Origin下载慢

热门文章

  1. 【 FPGA 】FIR 滤波器结构和优化(一)之滤波器的对称性(Filter Symmetry)
  2. 解读ADC采样芯片(EV10AQ190A)的工作模式(单通道模式)
  3. Checkly如何借助Terraform实现零宕机部署
  4. 服务容错保护断路器Hystrix之二:Hystrix工作流程解析
  5. Spark函数:cogroup
  6. CentOS7.0下编译安装Nginx 1.10.0
  7. 在JFinal的Controller中接收json数据
  8. java xml 学习_java学习(四)xml
  9. ROS 使用参数以及相应的 .launch 文件编写
  10. 堆(heap)与栈(stack)的区别(二)