MySQL Event Scheduler(事件調度器)是數據庫內建的定時任務機制,替代應用層定時器(如 Java ScheduledExecutorService),直接在數據庫層執行 SQL/存儲過程,避免網絡開銷,大數據更新性能更優。
SET GLOBAL event_scheduler = 1;
SET @@global.event_scheduler = 1;
SET GLOBAL event_scheduler = ON;
SET @@global.event_scheduler = ON;
SHOW VARIABLES LIKE 'event_scheduler';
SELECT @@event_scheduler;
SHOW PROCESSLIST; -- 若啟用,會顯示 event_scheduler 線程
CREATE EVENT IF NOT EXISTS eventJob
ON SCHEDULE EVERY 2 SECOND
STARTS '2015-07-14 00:00:00'
-- 可選 ENDS '2025-12-31 23:59:59'
ON COMPLETION PRESERVE -- 執行完不自動刪除
ENABLE
DO CALL mypro(); -- 調用存儲過程或執行 SQL
AT timestamp:單次執行EVERY interval:循環執行(支持 SECOND/MINUTE/HOUR/DAY/WEEK/MONTH/QUARTER/YEAR)STARTS / ENDS:指定生效時間窗口CALL mypro(); 或 SQL 語句
ALTER EVENT eventJob ON COMPLETION PRESERVE ENABLE; -- 啟用
ALTER EVENT eventJob ON COMPLETION PRESERVE DISABLE; -- 停用
SHOW EVENTS; -- 列出所有事件
SHOW CREATE EVENT eventJob; -- 查看創建語句
DROP EVENT eventJob; -- 刪除事件
mysqldump --events