首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL Event Scheduler 定時任務完整指南

     編輯:MySQL 資料庫相關知識

MySQL 內建事件調度器:替代 Cron 的資料庫級定時任務

MySQL 5.1+ 內建 Event Scheduler,無需外部腳本即可實現秒級、分級、天級循環任務。

啟用檢查與開啟

SHOW VARIABLES LIKE 'event_scheduler';
-- OFF 則執行:
SET GLOBAL event_scheduler = ON;
-- 永久生效:my.cnf [mysqld] 區段添加 event_scheduler=ON

CREATE EVENT 語法核心


CREATE EVENT [IF NOT EXISTS] event_name
ON SCHEDULE schedule
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE]
[COMMENT 'comment']
DO sql_statement;

schedule:
  AT timestamp [+ INTERVAL interval]          -- 單次執行
| EVERY interval [STARTS timestamp] [ENDS timestamp]  -- 循環執行

interval:
  YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE | SECOND
  | YEAR_MONTH | DAY_HOUR | DAY_MINUTE | DAY_SECOND
  | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND

經典範例集

場景SQL
每秒插入時間戳CREATE EVENT e_test ON SCHEDULE EVERY 1 SECOND DO INSERT INTO test.aaa VALUES (NOW());
5 天后單次清空表CREATE EVENT e_test ON SCHEDULE AT NOW() + INTERVAL 5 DAY DO TRUNCATE TABLE test.aaa;
指定時間單次執行CREATE EVENT e_test ON SCHEDULE AT '2023-12-31 23:59:59' DO TRUNCATE TABLE test.aaa;
每天定時清空CREATE EVENT e_test ON SCHEDULE EVERY 1 DAY DO TRUNCATE TABLE test.aaa;
5 天后啟動每天任務CREATE EVENT e_test ON SCHEDULE EVERY 1 DAY STARTS NOW() + INTERVAL 5 DAY DO TRUNCATE TABLE test.aaa;
每天任務,5 天后停止CREATE EVENT e_test ON SCHEDULE EVERY 1 DAY ENDS NOW() + INTERVAL 5 DAY DO TRUNCATE TABLE test.aaa;
5 天後啟動,1 月後停止CREATE EVENT e_test ON SCHEDULE EVERY 1 DAY STARTS NOW() + INTERVAL 5 DAY ENDS NOW() + INTERVAL 1 MONTH DO TRUNCATE TABLE test.aaa;
單次執行後自動銷毀CREATE EVENT e_test ON SCHEDULE EVERY 1 DAY ON COMPLETION NOT PRESERVE DO TRUNCATE TABLE test.aaa;

管理指令

-- 修改
ALTER EVENT e_test ON SCHEDULE EVERY 5 DAY;
ALTER EVENT e_test DISABLE;  -- 暫停
ALTER EVENT e_test ENABLE;   -- 恢復
ALTER EVENT e_test RENAME TO new_name;

-- 刪除
DROP EVENT [IF EXISTS] e_test;

-- 查看
SHOW EVENTS;
SHOW CREATE EVENT e_test;

關鍵參數說明

  • ON COMPLETION PRESERVE:任務結束後保留事件(預設 NOT PRESERVE,單次任務執行完自動刪除)
  • ENABLE/DISABLE:創建後是否立即生效(預設 ENABLE)
  • 事件體 DO 只能包含**單條 SQL**,複雜邏輯請封裝為存儲過程再 CALL
  • 時區以服務器 time_zone 為準

優缺點對比 Cron

維度Event SchedulerCron + 腳本
部署純 SQL,隨庫遷移需服務器部署腳本
精度秒級分鐘級(標準 cron)
事務支援原生需腳本控制
監控SHOW EVENTS / information_schema.EVENTS系統日誌
遷移隨 mysqldump 導出單獨遷移 crontab
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved