MySQL5.1新增Event Scheduler功能【實現定時性的作業】

來源:互聯網
上載者:User

    原先,LAMP的程式員為了完成一些周期性的資料庫操作任務,總是不得不藉助於作業系統的協助,比如Windows的計劃任務,或者Linux的contab。MySQL5.1終於新增了Event Scheduler功能,可以直接在後台實現一下定時性的作業。但不知道什麼原因,在英文版的參考手冊中,位於觸發器和視圖之間的第20章Event Scheduler,在中文版中被刪減掉了,手冊的其他部分也沒有絲毫提到它,好像它根本就不存在一樣,所以它的知名度不是很高。有興趣的讀者可以參考http://dev.mysql.com/doc/refman/5.1/en/events.html獲得比較完整的協助。

一、開啟
MySQL的Event Scheduler是根據預先安排的計划進行資料庫操作的資料庫物件,可以看作是一種“時間觸發器”。Event實際上是被一個特殊的event scheduler線程執行的,假如它正在啟動並執行話,可以通過SHOW PROCESSLIST命令看到它。全域變數event_scheduler用來設定是否伺服器端運行執行計畫任務,該變數有如下三種值:
OFF:計劃任務處於停止狀態,event scheduler線程沒有運行。是event_scheduler的預設值;
ON:計劃任務處於運行狀態,event scheduler線程啟動,並執行所有的計劃任務;
DISABLED:該值將致使計劃任務不可運行

SET GLOBAL event_scheduler = ON;SET @@global.event_scheduler = ON;SET GLOBAL event_scheduler = 1;SET @@global.event_scheduler = 1; 
建立Event Scheduler作為一種資料庫物件,其增刪改的DDL語句與其他對象非常相似,無非CREATE、ALTER、DROP等,建立的基本文法是:

CREATE EVENT (1)[IF NOT EXISTS] (2)event_name (3)ON SCHEDULE schedule (4)[ON COMPLETION [NOT] PRESERVE] (5)[ENABLE | DISABLE] (6)[COMMENT 'comment'] (7)DO sql_statement (8)
(1) 建立Event嘛,這倆關鍵字當然不能少了;
(2) 如果不存在同名的資料庫物件才建立;
(3) 計劃任務的名字。作為資料庫物件,都有一個本庫內唯一的名字做標識
(4) 計劃任務的計劃,重點就在這兒。有兩個關鍵字來設定任務的執行計畫:AT和EVERY:
AT指定的是一個一次性計劃,後面跟著一個時間戳記,後續的sql語句將在指定的時間被執行一次;
EVERY指定的是一個周期性計劃,在該子句中可以指定從某時間點到某時間點期間,每隔某周期就執行一次該任務。
(5) 任務整個執行完畢後,該計劃任務對象是否還在資料庫中保留。預設不保留
(6) 有效或失效。預設有效
(7) 真正要執行的語句執行個體,首先是一個一次性計劃任務的例子,該任務在指定的2008-02-06 23:59:00這個時間點,向messages表中插入一條記錄:
CREATE EVENT e_totalsON SCHEDULE AT '2006-02-10 23:59:00'DOINSERT INTO messages VALUES (null, 'admin', '過年了!', '祝大家鼠年發大財!!!', '127.0.0.1',NOW());
下面是一個周期性計劃任務的例子,該任務在2008-02-06 23:59:00開始的一年內,每隔1小時就刪除掉messages表的早先的10條記錄:
CREATE EVENT e_hourlyON SCHEDULEEVERY 1 HOUR STARTS '2007-02-10 23:59:00' ENDS '2008-02-10 23:59:00'DODELETE FROM messages limit 10;

計劃任務屬於資料庫伺服器端的對象,建立好後,只要開啟了event_scheduler,就可以自動觸發執行了,不用在前台進行任何幹預。當然一定要記住,只有MySQL5.1以上版本才支援該對象。 



相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.