MySQL 事件调度器的操作流程

下面的文章主要介绍的是MySQL 事件调度器(Event Scheduler),我们这次试验的事件调度器是在 MySQL 5.1 的环境中进行的,其新增另一个相关功能,可以用来作为一个新的定时任务调度器。

取代部分原先只能用操作系统任务调度器才能完成的定时功能。
一、概述

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

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

事件是由一个特定的线程来管理的,也就是所谓的”事件调度器”。启用MySQL 事件调度器后,拥有 SUPER 权限的账户执行 SHOW PROCESSLIST 就可以看到这个线程了。通过设定全局变量event_scheduler 的值即可动态的控制事件调度器是否启用。

  1. (root:localhost:)test> SET GLOBAL event_scheduler = ON;  
  2. (root:localhost:)test> show processlist\G 

4. row

  1. Id: 46147  
  2. User: event_scheduler  
  3. Host: localhost  
  4. db: NULL  
  5. Command: Daemon  
  6. Time: 1  
  7. State: Waiting on empty queue  
  8. Info: NULL  

 

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

二、应用案例

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

首先创建存储过程

 

  1. delimiter //  
  2. create procedure `Slave_Monitor`()  
  3. begin  
  4. SELECT VARIABLE_VALUE INTO @SLAVE_STATUS   
  5. FROM information_schema.GLOBAL_STATUS   
  6. WHERE VARIABLE_NAME='SLAVE_RUNNING';  
  7. IF ('ON' != @SLAVE_STATUS) THEN  
  8. SET GLOBAL SQL_SLAVE_SKIP_COUNTER=0;  
  9. SLAVE START;  
  10. END IF;  
  11. end; //  
  12. delimiter ;  

 

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

接着,创建任务

 

  1. CREATE EVENT IF NOT EXISTS `Slave_Monitor`  
  2. ON SCHEDULE EVERY 5 SECOND  
  3. ON COMPLETION PRESERVE  
  4. DO  
  5. CALL Slave_Monitor();  

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

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

  1. (root:localhost:)test> alter event `Slave_Monitor` ON   
  2. COMPLETION PRESERVE DISABLE;  
  3. (root:localhost:)test> alter event `Slave_Monitor` ON   
  4. COMPLETION PRESERVE ENABLE; 

以上的相关内容就是对MySQL 事件调度器的介绍,望你能有所收获。

【编辑推荐】

  1. MySQL存储引擎中InnoDB与MyISAM的不同之处
  2. MySQL存储引擎InnoDB与MyISAM的差别
  3. MySQL SHOW INDEX语法的实际应用
  4. MySQL字符串值的实际应用
  5. MySQL left join, right join的区别

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/272983.html<

赞 (0)
管理的头像管理
上一篇2025-05-09 01:40
下一篇 2025-05-09 01:41

相关推荐

  • jsp空间购买和交换数据空间怎么买,有哪些注意事项?

    购买JSP空间时,是否考虑过数据交换空间的性能?简米科技(2003年始创,23年行业沉淀)与酷番云(工信部一类增值电信全牌照)这类持牌自营机房的服务商,能确保数据交换的高效稳定,是值得优先选择的合作伙伴,为什么JSP空间需要搭配独立的数据交换空间从JSP应用特性看数据交换需求JSP基于Java技术,常用于企业级……

    2026-08-11
    0
  • 建网站用香港空间效果怎么样,香港空间稳定吗?

    建网站用香港空间,对于创建网站资产来说,核心价值在于免备案和全球带宽优势,尤其适合外贸、跨境电商和需要快速启动的项目,但你必须权衡国内访问延迟,并选择有资质的服务商以保证资产安全,香港空间的核心优势与适用边界免备案:节省时间就是节省成本国内服务器需要备案,通常需要10到20天,香港空间无需备案,域名解析后即可上……

    2026-08-11
    0
  • Java连接云数据库的方法是什么,如何操作

    Java连接云数据库的核心在于通过JDBC驱动,结合云服务商提供的连接地址、端口、数据库名及认证信息,配置安全策略(如SSL、IP白名单),即可实现稳定高效的远程数据库访问,基础准备:JDBC驱动与依赖管理连接云数据库前,需要确保开发环境具备对应的JDBC驱动,以最常见的MySQL为例,你需要引入mysql-c……

    2026-08-11
    0
  • 建网站公安联网备案必须使用数据码吗,备案流程是什么

    网站备案包括ICP备案和公安联网备案,两者缺一不可,公安联网备案必须使用服务商提供的数据码,选择持有合法资质的服务商是顺利通过备案的前提,为什么网站必须进行公安联网备案根据公安部《计算机信息网络国际联网安全保护管理办法》,网站开通后30日内必须到公安机关办理备案手续,未完成公安备案的网站,面临责令整改、关闭网站……

    2026-08-10
    0
  • 建一个企业网站大概需要多少钱?,怎么收费?

    建网站要多少钱,没有一个固定的数字,几百到几万都可能,但真正的“创建网站资产”绝不仅仅是初次投入的成本,而是基于长期稳定、合规和安全的持续性投入,其中核心取决于你选择了什么样的“地基”来承载你的业务,建站预算的构成与行业基准当你开始规划一个网站,最先面对的就是预算问题,一个常见的误区是只关注网站“看起来”的建造……

    2026-08-10
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注