1.開啟
全局變量event_scheduler用來設定是否服務器端運行執行計劃任務,該變量有如下三種值:
OFF:計劃任務處於停止狀態,event scheduler線程沒有運行。是event_scheduler的默認值(執行一下任意一條命令關閉);
SET GLOBAL event_scheduler = OFF;
SET @@global.event_scheduler = OFF;
SET GLOBAL event_scheduler = 0;
SET @@global.event_scheduler = 0;
ON:計劃任務處於運行狀態,event scheduler線程啟動,並執行所有的計劃任務(執行一下任意一條命令開啟);
代碼如下 復制代碼
SET GLOBAL event_scheduler = ON;
SET @@global.event_scheduler = ON;
SET GLOBAL event_scheduler = 1;
SET @@global.event_scheduler = 1;
DISABLED:該值將致使計劃任務不可運行
運行MySql服務時候加上參數
--event-scheduler=DISABLED
或者在my.cnf 中設置
查看源代碼打印幫助
1 event_scheduler=DISABLED
MySQL的Event Scheduler是根據預先安排的計劃進行數據庫操作的數據庫對象,可以看作是一種“時間觸發器”。Event實際上是被一個特殊的event scheduler線程執行的,假如它正在運行的話,可以通過SHOW PROCESSLIST命令看到它。
2.創建
創建的基本語法是:
代碼如下 復制代碼1 CREATE EVENT (1)
2 [IF NOT EXISTS] (2)
3 event_name (3)
4 ON SCHEDULE schedule (4)
5 [ON COMPLETION [NOT] PRESERVE] (5)
6 [ENABLE | DISABLE] (6)
7 [COMMENT 'comment'] (7)
8 DO sql_statement (8)
逐條介紹:
(1) 創建Event嘛,這倆關鍵字當然不能少了
(2) 如果不存在同名的數據庫對象才創建
(3) 計劃任務的名字。作為數據庫對象,都有一個本庫內唯一的名字做標識
(4) 計劃任務的計劃,重點就在這兒。有兩個關鍵字來設定任務的執行計劃:AT和EVERY:
AT指定的是一個一次性計劃,後面跟著一個時間戳,後續的sql語句將在指定的時間被執行一次;
EVERY指定的是一個周期性計劃,在該子句中可以指定從某時間點到某時間點期間,每隔某周期就執行一次該任務。
(5) 任務整個執行完畢後,該計劃任務對象是否還在數據庫中保留。默認不保留
(6) 有效或失效。默認有效
(7) 真正要執行的語句
3.示例
1.每10秒鐘向myschema.mytable表中插入時間戳:
代碼如下 復制代碼CREATE EVENT e_store_ts ON SCHEDULE EVERY 10 SECOND DO INSERT INTO myschema.mytable VALUES (UNIX_TIMESTAMP());
2.在2008-02-06 23:59:00開始的一年內,每隔1小時就刪除掉messages表的早先的10條記錄:
代碼如下 復制代碼
CREATE EVENT e_hourly
ON SCHEDULE
EVERY 1 HOUR STARTS ’2007-02-10 23:59:00′ ENDS ’2008-02-10 23:59:00′
DO
DELETE FROM messages limit 10;
4.查看EVENT
mysql>SELECT * FROM INFORMATION_SCHEMA.EVENTS
> WHERE EVENT_NAME='e_store_ts'
> AND EVENT_SCHEMA='myschema'G
*************************** 1. row ***************************
EVENT_CATALOG: NULL
EVENT_SCHEMA: myschema
EVENT_NAME: e_store_ts
DEFINER: jon@ghidora
EVENT_BODY: SQL
EVENT_DEFINITION: INSERT INTO myschema.mytable VALUES (UNIX_TIMESTAMP())
EVENT_TYPE: RECURRING
EXECUTE_AT: NULL
INTERVAL_VALUE: 5
INTERVAL_FIELD: SECOND
SQL_MODE: NULL
STARTS: 0000-00-00 00:00:00
ENDS: 0000-00-00 00:00:00
STATUS: ENABLED
ON_COMPLETION: NOT PRESERVE
CREATED: 2006-02-09 22:36:06
LAST_ALTERED: 2006-02-09 22:36:06
LAST_EXECUTED: NULL
EVENT_COMMENT:
1 row in set (0.00 sec)
5.刪除EVENT
代碼如下 復制代碼DELETE FROM mysql.event
WHERE db = 'myschema'
AND definer = 'jon@ghidora'
AND name = 'e_insert';