通過實例講解mysql如何實現定時任務

通過實例講解mysql如何實現定時任務

mysql5.1.6起,增加了一個非常有特色的功能-事件調度器(Event scheduler),可以用做定時執行某些特定任務(例如:刪除記錄、對數據進行匯總、數據備份等等),來取代原先只能由操作系統的計劃任務來執行的工作。

更值得一提的是mysql的事件調度器可以精確到每秒鐘執行一個任務,而操作系統的計劃任務(如:linux的cron或windows下的任務計劃)只能精確到每分鐘執行一次。對于一些對數據實時性要求比較高的應用(例如:股票、賠率、比分等)就非常適合。

事件調度器有時也可以稱為臨時觸發器(temporal triggers),因為事件調度器是基于特定時間周期觸發來執行某些任務,而觸發器(Triggers)是基于某個表所產生的事件觸發的,區別也就在這里。

一、查看是否開啟

>?show?variables?like?'event_scheduler';

二、開啟事件調度器

set?global?event_scheduler?=?on;

這里的設置,當mysql重啟后,又會自動關閉。如果需要一直開啟,需要在my.ini中配置如下:

(推薦學習視頻教程:mysql視頻教程

event_scheduler?=?on

三、創建事件語法

CREATE?EVENT?[IF?NOT?EXISTS?]?event_name ON?SCHEDULE?schedule [?ON?COMPLETION?[?NOT?]?PRESERVE?] [?ENABLE?|?DISABLE?] [?COMMENT?'注釋'?] DO?SQL語句; ?? schedule?:?AT?TIMESTAMP?[+?INTERVAL?interval?]?|?EVERY?interval?[?STARTS?TIMESTAMP?]?[?ENDS?TIMESTAMP?] interval?:?quantity?{?YEAR?|?QUARTER?|?MONTH?|?DAY?| ???????????HOUR?|?MINUTE?|?WEEK?|?SECOND?| ???????????YEAR_MONTH?|?DAY_HOUR?|?DAY_MINUTE?|?DAY_SECOND?| ???????????HOUR_MINUTE?|?HOUR_SECOND?|?MINUTE_SECOND?}

event_name:事件名,最大長度64個字符。

schedule:執行時間。

[ ON COMPLETION [ NOT ] PRESERVE ] :事件是否需要復用。

[ ENABLE | DISABLE ] :事件開啟或關閉。

四、關閉事件

ALTER?EVENT?event_name?DISABLE;

五、開啟事件

ALTER?EVENT?event_name?ENABLE;

六、刪除事件

DROP?EVENT?[IF?EXISTS?]?event_name;

七、查看所有事件

SHOW?EVENTS;

八、事件例子

我們先創建一個簡單的test表用于測試

CREATE?TABLE?`test`?( ?`id`?int(11)?unsigned?NOT?NULL?AUTO_INCREMENT?COMMENT?'ID', ?`now`?datetime?DEFAULT?NULL?COMMENT?'時間', ?PRIMARY?KEY?(`id`) )?ENGINE=InnoDB?DEFAULT?CHARSET=utf8;

事件類型有兩種,一種是間隔觸發,一種是特定時間觸發。

我們每隔一秒向test表插入一條記錄:

DROP?EVENT?IF?EXISTS?event_test; CREATE?EVENT?event_test ON?SCHEDULE?EVERY?1?SECOND?STARTS?'2017-08-22?11:57:00'?ENDS?'2017-08-22?12:00:00' ON?COMPLETION?PRESERVE ENABLE COMMENT?'每隔一秒向test表插入記錄' DO?INSERT?INTO?test?VALUES(NULL,?now());

結果如圖:

通過實例講解mysql如何實現定時任務 ? ?

相關文章教程推薦:mysql視頻教程

以上就是通過實例講解

? 版權聲明
THE END
喜歡就支持一下吧
點贊14 分享