MySQL 从 5.1 版本开始提供“事件(Event)”功能,可以把它理解为数据库内置的“定时任务机制”:在达到预设时间后,系统会自动执行提前编写好的 SQL 语句,从而减少人工操作,实际应用中非常方便。简单来说,它本质上是一组可按规则调度执行的 SQL 指令,既可以设置为“仅执行一次”(例如某天凌晨 2 点自动备份上个月的订单数据),也可以配置为“按照固定周期循环执行”(例如每小时清理一次过期临时验证码、每秒统计一次实时在线用户数量)。
与操作系统中的计划任务工具(如 Windows 任务计划程序、Linux Crontab)相比,MySQL Event 事件调度器的优势较为明显——它最高可以精确到每秒执行一次,尤其适合对实时性要求较高的业务场景(例如电商平台库存实时同步),而系统层面的计划任务通常只能精确到分钟级。
不过,MySQL 事件和触发器虽然都属于自动化执行机制,但作用并不相同:触发器更像“即时响应器”,当数据库发生指定操作(如插入数据、更新字段)时会立即触发;而事件则更像“定时调度器”,完全按照预先设定的时间规则启动,因此也经常被称为“定时触发器”。
一、如何查看该事件?
在 MySQL 中,event_scheduler 调度器负责管理和执行事件。
输入:
SHOW VARIABLES LIKE 'event_scheduler'; -- 查看事件调度器的全局系统变量状态。 SELECT @@event_scheduler; -- 作用与上面相同,只是查询方式不同。 SHOW PROCESSLIST; -- 查看当前MySQL服务器中所有正在运行的连接和线程详细信息,若调度器正常运行且当前没有执行事件,也可在此辅助判断。



一、如何修改该事件?
1. 通过 SET 全局参数 event_scheduler 进行修改;
SET GLOBAL event_scheduler = ON; -- 开启事件调度器
2. 修改配置文件:
在 my.ini(默认路径:C:ProgramDataMySQLMySQL Server 8.0my.ini)中找到 [mysqld]:
添加:
event_scheduler = ON
保存配置并重启 MySQL 服务后即可完成修改。
