官网文档:MySQL :: MySQL 8.4 Reference Manual :: 27.4.1 Event Scheduler Overview
一 引入
MySQL 的 Event Scheduler(事件调度器)功能首次在 MySQL 5.1 中引入,旨在让用户能够在数据库中定义和管理计划任务。它类似于操作系统中的任务调度工具(如 Cron),但在 MySQL 中运行,主要用来自动执行周期性的任务或在特定时间点运行一次的任务。
二 作用
Event Scheduler 的主要作用是 自动化数据库操作,包括但不限于:
- 定时清理数据:如清除过期的会话数据或日志。
- 周期性数据汇总:定时生成统计报告或汇总表。
- 维护任务:如重建索引或更新缓存表。
- 业务逻辑实现:实现特定的时间触发事件(如发送提醒或通知)。
它的优势在于任务直接运行在数据库内,不需要额外依赖外部脚本或调度工具。
三 使用方法
1. 启用事件调度器
默认情况下,MySQL 的 Event Scheduler 是关闭的。可以通过以下方式开启:
-
临时启用(仅当前会话有效):
SET GLOBAL event_scheduler = ON;
-
配置永久启用: 编辑 MySQL 配置文件(
my.cnf
),添加以下内容:[mysqld] event_scheduler=ON
2. 创建事件
MySQL 中通过 CREATE EVENT
语句来创建事件。
-
创建一个在指定时间运行一次的事件:
CREATE EVENT example_event ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 DAY DO INSERT INTO example_table (message, created_at) VALUES ('Hello, Event!', NOW());
-
创建一个周期性运行的事件:
CREATE EVENT clean_up_logs ON SCHEDULE EVERY 1 DAY STARTS '2025-01-15 00: