mysql定時任務 Event Scheduler用法詳解

來源:互聯網
上載者:User

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';

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

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.