MySQL事件调度器(Event Scheduler)开启与创建详解

周末不加班
周末不加班
发布时间:2026-10-13| 6人浏览过
原创

MySQL自5.1.0版本起引入了事件调度器(Event Scheduler),作为一种基于时间的触发器机制,可用于定时执行特定的SQL任务。本文将详细介绍开启调度器的方法、事件创建语法的各个参数含义,以及事件的修改与删除操作。

开启事件调度器

为了利用此功能,首先需要确认并开启全局的事件调度器。该功能默认处于关闭状态。

第1步:检查与开启调度器服务

目的:确保数据库已启动后台进程以处理定时事件。

操作方法:

  1. 动态开启:在会话中执行以下命令,无需重启数据库即可生效。
SET GLOBAL event_scheduler=1;
-- 或者使用关键字 ON
SET GLOBAL event_scheduler=ON;
  1. 配置文件开启:若希望永久生效,可在 my.ini 或 my.cnf 配置文件的 [mysqld] 段中添加如下内容:
event_scheduler=1

验证状态:通过查询系统变量确认是否成功开启。

SHOW VARIABLES LIKE 'event_scheduler';
SELECT @@event_scheduler;

若返回值为 ON 或 1,则表示调度器已就绪。

创建定时事件

使用 CREATE EVENT 语句定义新的定时任务。核心在于制定合理的 SCHEDULE(执行计划)和 DO(执行动作)。

第2步:编写创建语句

目的:根据需求设定一次性或周期性执行的逻辑。

关键参数说明:

  • event_name:自定义事件名称。
  • ON SCHEDULE:定义执行频率。可分为 AT(特定时间点)或 EVERY(循环间隔)。
  • ON COMPLETION [NOT] PRESERVE:决定事件执行完后的去留。强烈建议设置为 PRESERVE,否则默认情况下事件执行完毕后会自动删除,导致无法再次查看或调整。
  • [ENABLE | DISABLE]:控制事件初始状态,默认为启用。
  • DO sql_statement:要执行的SQL语句。

时间规划示例

  • 单次延时执行:从现在起5天后执行一次。
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 5 DAY
  • 指定时刻执行:在设定的具体时间执行一次。
ON SCHEDULE AT TIMESTAMP '2012-03-07 12:00:00'
  • 周期性执行:从当前起5天后开始,每天执行一次,直至一个月后自动停止。
ON SCHEDULE EVERY 1 DAY 
STARTS CURRENT_TIMESTAMP + INTERVAL 5 DAY 
ENDS CURRENT_TIMESTAMP + INTERVAL 1 MONTH

第3步:完整创建案例

输入:创建一个每月1日凌晨执行的数据更新事件。

操作:执行以下DDL语句。

CREATE EVENT `NewEvent`
ON SCHEDULE EVERY 1 MONTH STARTS '2012-04-01 00:00:00' ENDS '2100-01-01 00:00:00'
ON COMPLETION PRESERVE
ENABLE
DO
    UPDATE tb_test SET amount=100 WHERE id=2;

完成判断:语句执行成功后,可通过 SHOW EVENTS; 查看所有已定义的事件列表,观察新事件的运行状态和计划是否显示正确。

管理与维护事件

随着业务逻辑变更,可能需要暂停、恢复或删除已存在的定时任务。

第4步:修改事件属性

目的:不删除事件的情况下调整其配置。

操作:使用 ALTER EVENT 命令。

例如,关闭一个名为 e_test 的事件:

ALTER EVENT e_test DISABLE;

注意风险:部分版本的MySQL中,如果事件被显式 DISABLE 且未设置特殊标志,可能需要在数据库重启后重新确认其持久化状态,通常建议在创建时即做好规划。

第5步:删除事件

目的:彻底移除不再需要的定时任务。

操作:执行 DROP EVENT 命令,建议使用 IF EXISTS 防止因事件不存在而报错。

DROP EVENT IF EXISTS event_name;

总结

MySQL事件调度器为数据库内置了强大的定时处理能力,特别适用于数据归档、统计报表生成等周期性维护工作。在实际使用中,务必关注 ON COMPLETION PRESERVE 的设置以避免意外丢失事件,同时合理设计执行时间段以减少对生产环境的并发影响。以上就是MySQL事件调度器开启与创建的详细内容,更多关于MySQL定时任务的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。