小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

使用MySQL計劃任務(wù)

 Blex 2011-05-30
原先,LAMP的程序員為了完成一些周期性的數(shù)據(jù)庫操作任務(wù),總是不得不借助于操作系統(tǒng)的幫助,比如Windows的計劃任務(wù),或者Linux的contab。MySQL5.1終于新增了Event Scheduler功能,可以直接在后臺實現(xiàn)一下定時性的作業(yè)。但不知道什么原因,在英文版的參考手冊中,位于觸發(fā)器和視圖之間的第20章Event Scheduler,在中文版中被刪減掉了,手冊的其他部分也沒有絲毫提到它,好像它根本就不存在一樣,所以它的知名度不是很高。有興趣的讀者可以參考http://dev./doc/refman/5.1/en/events.html獲得比較完整的幫助。

1.1 開啟
     MySQL的Event Scheduler是根據(jù)預(yù)先安排的計劃進(jìn)行數(shù)據(jù)庫操作的數(shù)據(jù)庫對象,可以看作是一種“時間觸發(fā)器”。Event實際上是被一個特殊的event scheduler線程執(zhí)行的,假如它正在運行的話,可以通過SHOW PROCESSLIST命令看到它。全局變量event_scheduler用來設(shè)定是否服務(wù)器端運行執(zhí)行計劃任務(wù),該變量有如下三種值:
      OFF:計劃任務(wù)處于停止?fàn)顟B(tài),event scheduler線程沒有運行。是event_scheduler的默認(rèn)值;
      ON:計劃任務(wù)處于運行狀態(tài),event scheduler線程啟動,并執(zhí)行所有的計劃任務(wù);
      DISABLED:該值將致使計劃任務(wù)不可運行
     你可以使用下列的任意一句開啟計劃任務(wù):
           SET GLOBAL event_scheduler = ON;
           SET @@global.event_scheduler = ON;
           SET GLOBAL event_scheduler = 1;
           SET @@global.event_scheduler = 1;

1.2 創(chuàng)建
     Event Scheduler作為一種數(shù)據(jù)庫對象,其增刪改的DDL語句與其他對象非常相似,無非CREATE、ALTER、DROP等,創(chuàng)建的基本語法是:
          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) 創(chuàng)建Event嘛,這倆關(guān)鍵字當(dāng)然不能少了
     (2) 如果不存在同名的數(shù)據(jù)庫對象才創(chuàng)建
     (3) 計劃任務(wù)的名字。作為數(shù)據(jù)庫對象,都有一個本庫內(nèi)唯一的名字做標(biāo)識
     (4) 計劃任務(wù)的計劃,重點就在這兒。有兩個關(guān)鍵字來設(shè)定任務(wù)的執(zhí)行計劃:AT和EVERY:
          AT指定的是一個一次性計劃,后面跟著一個時間戳,后續(xù)的sql語句將在指定的時間被執(zhí)行一次;
          EVERY指定的是一個周期性計劃,在該子句中可以指定從某時間點到某時間點期間,每隔某周期就執(zhí)行一次該任務(wù)。
     (5) 任務(wù)整個執(zhí)行完畢后,該計劃任務(wù)對象是否還在數(shù)據(jù)庫中保留。默認(rèn)不保留
     (6) 有效或失效。默認(rèn)有效
     (7) 真正要執(zhí)行的語句

1.3 實例
      首先是一個一次性計劃任務(wù)的例子,該任務(wù)在指定的2008-02-06 23:59:00這個時間點,向messages表中插入一條記錄:
          CREATE EVENT e_totals
          ON SCHEDULE AT '2006-02-10 23:59:00'
          DO
          INSERT INTO messages VALUES (null, 'admin', '過年了!', '祝大家鼠年發(fā)大財?。?!', '127.0.0.1',NOW());
      下面是一個周期性計劃任務(wù)的例子,該任務(wù)在2008-02-06 23:59:00開始的一年內(nèi),每隔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;

     計劃任務(wù)屬于數(shù)據(jù)庫服務(wù)器端的對象,創(chuàng)建好后,只要開啟了event_scheduler,就可以自動觸發(fā)執(zhí)行了,不用在前臺進(jìn)行任何干預(yù)。當(dāng)然一定要記住,只有MySQL5.1以上版本才支持該對象。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多