Event Scheduler(事件調度器)是 MySQL 內建的定時任務引擎,可替代作業系統 Cron,實現數據庫級的周期性維護:統計信息收集、歷史數據清理、檢查優化等。本文通過完整案例演示建立、啟用、監控、禁用、刪除全生命周期操作。
| 優勢 | 適用場景 | 注意事項 |
|---|---|---|
| 隨數據庫遷移自動遷移,減少運維風險 | 定期收集統計信息 | 高性能核心庫慎用,避免調度器佔用資源 |
| 無需外部依賴,權限內自閉環 | 清理歷史/臨時數據 | 過於複雜邏輯建議移至應用層 |
| 秒級調度精度 | 數據庫健康檢查 | 啟停需 SUPER 權限 |
CREATE DATABASE test1; USE test1; CREATE TABLE test(id1 VARCHAR(10), create_time DATETIME);
CREATE EVENT test_event_1
ON SCHEDULE EVERY 5 SECOND
DO
INSERT INTO test1.test(id1, create_time) VALUES ('test', NOW());
SHOW EVENTS \G; -- 關鍵字段:Status=ENABLED, Interval=5 SECOND, Starts=創建時間
SHOW VARIABLES LIKE '%scheduler%'; -- event_scheduler = OFF SET GLOBAL event_scheduler = 1; -- 或 ON SHOW VARIABLES LIKE '%scheduler%'; -- event_scheduler = ON
SELECT * FROM test; -- 每 5 秒新增一行 'test' 記錄 SHOW PROCESSLIST \G; -- 可見 event_scheduler 執行緒:Command=Daemon, State=Waiting for next activation
CREATE EVENT trunc_test ON SCHEDULE EVERY 1 MINUTE DO TRUNCATE TABLE test;