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

MySQL 事件調度器實戰:定時任務替代方案與最佳實踐

     編輯:MySQL 綜合教學

MySQL 事件調度器實戰指南

Event Scheduler(事件調度器)是 MySQL 內建的定時任務引擎,可替代作業系統 Cron,實現數據庫級的周期性維護:統計信息收集、歷史數據清理、檢查優化等。本文通過完整案例演示建立、啟用、監控、禁用、刪除全生命周期操作。

核心優勢與適用場景

優勢適用場景注意事項
隨數據庫遷移自動遷移,減少運維風險定期收集統計信息高性能核心庫慎用,避免調度器佔用資源
無需外部依賴,權限內自閉環清理歷史/臨時數據過於複雜邏輯建議移至應用層
秒級調度精度數據庫健康檢查啟停需 SUPER 權限

實戰完整演示

環境準備

CREATE DATABASE test1;
USE test1;
CREATE TABLE test(id1 VARCHAR(10), create_time DATETIME);

1. 建立每 5 秒插入一行的事件

CREATE EVENT test_event_1
ON SCHEDULE EVERY 5 SECOND
DO
  INSERT INTO test1.test(id1, create_time) VALUES ('test', NOW());

2. 查看事件狀態

SHOW EVENTS \G;
-- 關鍵字段:Status=ENABLED, Interval=5 SECOND, Starts=創建時間

3. 啟用調度器(預設關閉)

SHOW VARIABLES LIKE '%scheduler%';  -- event_scheduler = OFF
SET GLOBAL event_scheduler = 1;       -- 或 ON
SHOW VARIABLES LIKE '%scheduler%';  -- event_scheduler = ON

4. 觀察執行效果

SELECT * FROM test;
-- 每 5 秒新增一行 'test' 記錄

SHOW PROCESSLIST \G;
-- 可見 event_scheduler 執行緒:Command=Daemon, State=Waiting for next activation

5. 建立每分鐘清表事件

CREATE EVENT trunc_test
ON SCHEDULE EVERY 1 MINUTE
DO TRUNCATE TABLE test;

6. 動態控制事件

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved