首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 事件調度器 實戰:定時任務創建、啟停管理與 Navicat 可視化操作

     編輯:MySQL 綜合教學

MySQL 事件調度器 實戰:定時任務創建、啟停管理與 Navicat 可視化操作

1. 核心概念

MySQL Event Scheduler(事件調度器)是數據庫內建的定時任務機制,替代應用層定時器(如 Java ScheduledExecutorService),直接在數據庫層執行 SQL/存儲過程,避免網絡開銷,大數據更新性能更優。

2. 啟用調度器(四種等效方式)

SET GLOBAL event_scheduler = 1;
SET @@global.event_scheduler = 1;
SET GLOBAL event_scheduler = ON;
SET @@global.event_scheduler = ON;

3. 查看調度器狀態(三種方式)

SHOW VARIABLES LIKE 'event_scheduler';
SELECT @@event_scheduler;
SHOW PROCESSLIST;  -- 若啟用,會顯示 event_scheduler 線程

4. SQL 創建事件

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:指定生效時間窗口

5. Navicat 可視化創建

  1. 打開數據庫 → 右鍵「Event」→ 「New Event」
  2. General 頁:名稱、狀態、ON COMPLETION (PRESERVE/DROP)、DEFINER
  3. Schedule 頁:選擇 AT/EVERY、頻率、開始/結束時間
  4. Definition 頁:輸入 CALL mypro(); 或 SQL 語句
  5. 保存即可
Navicat Event 通用設置 Navicat Event 調度設置

6. 動態啟停事件

ALTER EVENT eventJob ON COMPLETION PRESERVE ENABLE;  -- 啟用
ALTER EVENT eventJob ON COMPLETION PRESERVE DISABLE; -- 停用

7. 事件管理命令

SHOW EVENTS;                    -- 列出所有事件
SHOW CREATE EVENT eventJob;     -- 查看創建語句
DROP EVENT eventJob;            -- 刪除事件

8. 注意事項

  • 事件體內不能直接執行 SELECT 返回結果集,需封裝在存儲過程中
  • 長時間運行的事件會阻塞調度器線程,建議異步處理或拆分批次
  • 備份/遷移時需導出事件:mysqldump --events
  • 時區影響:事件按服務器系統時區執行,跨時區部署需注意
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved