1. 程式人生 > 資料庫 >mysql實現設定定時任務的方法分析

mysql實現設定定時任務的方法分析

本文例項講述了mysql實現設定定時任務的方法。分享給大家供大家參考,具體如下:

今天遇到了個需要每天定時執行的任務,在mysql資料庫裡面提供了這樣的功能,正好整理下分享出來。

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

檢視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點每十秒執行一次)

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具體資訊。

更多關於MySQL相關內容感興趣的讀者可檢視本站專題:《MySQL查詢技巧大全》、《MySQL事務操作技巧彙總》、《MySQL儲存過程技巧大全》、《MySQL資料庫鎖相關技巧彙總》及《MySQL常用函式大彙總》

希望本文所述對大家MySQL資料庫計有所幫助。