mysql設置定時任務

今天遇到了個須要天天定時執行的任務,在mysql數據庫裏面提供了這樣的功能,正好整理下分享出來。mysql

1.首先檢查是否開啓了定時任務sql

查看event是否開啓 : SHOW VARIABLES LIKE '%event_sche%';
將事件計劃開啓 : SET GLOBAL event_scheduler = 1; 
將事件計劃關閉 : SET GLOBAL event_scheduler = 0; 
關閉事件任務 : ALTER EVENT eventName ON COMPLETION PRESERVE DISABLE; 
開啓事件任務 : ALTER EVENT eventName ON COMPLETION PRESERVE ENABLE; 
查看事件任務 : SHOW EVENTS ;

2.建立一個存儲過程數據庫

DELIMITER //
DROP PROCEDURE IF EXISTS p_test//
CREATE PROCEDURE p_test()  
BEGIN 
INSERT INTO test(name, create_time) values('testName', now());
END//

3.設置定時任務調用這個存儲過程(從2015.8.8 1點每十秒執行一次)spa

DROP EVENT IF EXISTS e_test//
CREATE EVENT e_test 
ON SCHEDULE EVERY 10 second STARTS TIMESTAMP '2015-08-08 01:00:00'
ON COMPLETION PRESERVE 
DO 
BEGIN 
CALL p_test();
END//

 

 

備註:在event事件中:ON SCHEDULE 計劃任務,有兩種設定計劃任務的方式:
 
1. AT 時間戳,用來完成單次的計劃任務。

2. EVERY 時間(單位)的數量時間單位[STARTS 時間戳] [ENDS時間戳],用來完成重複的計劃任務。

在兩種計劃任務中,時間戳能夠是任意的TIMESTAMP 和DATETIME 數據類型,時間戳須要大於當前時間。

在重複的計劃任務中,時間(單位)的數量能夠是任意非空(Not Null)的整數式,時間單位是關鍵詞:YEAR,MONTH,DAY,HOUR,MINUTE 或者SECOND。

提示: 其餘的時間單位也是合法的如:QUARTER, WEEK, YEAR_MONTH,DAY_HOUR,DAY_MINUTE,DAY_SECOND,HOUR_MINUTE,HOUR_SECOND, MINUTE_SECOND,不建議使用這些不標準的時間單位。

 [ON COMPLETION [NOT] PRESERVE]
 
ON COMPLETION參數表示"當這個事件不會再發生的時候",即當單次計劃任務執行完畢後或當重複性的計劃任務執行到了ENDS階段。而PRESERVE的做用是使事件在執行完畢後不會被Drop掉,建議使用該參數,以便於查看EVENT具體信息。blog

相關文章
相關標籤/搜索