自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視頻教程
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END
喜歡就支持一下吧
相關推薦