mysql定時器,mysql定時任務

來源:互聯網
上載者:User

mysql定時器,mysql定時任務

mysql定時器既是mysql的事件,在實際開發中,我們有時候需要定時去執行一些操作,大部分人通過ScheduledExecutorService類去建立定時,這種如果遇到大資料的更新的時候,運行速度比較忙,這時候我們可以考慮使用mysql定時器去執行SQL指令檔。

要使用mysql定時器。

首先必須啟動調度器“event_scheduler”。

查看當前是否已開啟事件計劃(調度器)有3種方法:

1)     SHOW VARIABLES LIKE 'event_scheduler';

2)     SELECT @@event_scheduler;

3)     SHOW PROCESSLIST;

開啟事件計劃(調度器)開關有4種方法:

1)     SET GLOBAL event_scheduler = 1;

2)     SET @@global.event_scheduler = 1;

3)     SET GLOBAL event_scheduler = ON;

4)     SET @@global.event_scheduler = ON;

其次是建立定時器事件,可以通過sql建立,也可以安裝Navicat Premium(mysql用戶端)建立。

1)通過sql建立定時器事件:

create event if not existseventJob 
on schedule every 2 second STARTS '2015-07-14 00:00:00'
on completion PRESERVE 

ENABLE
do callmypro();

上述sql指令碼中“eventJob ”為定時器事件名稱,“mypro”為mysql函數或者預存程序。sql指令碼表示從 '2015-07-14 00:00:00'開始,每2秒鐘執行mypro()函數一次。當然也可以設定結束時間。

2) 通過用戶端建立定時器事件:

中所示,call關鍵字後是需要執行的函數或者預存程序;狀態表示定時器事件的狀態,是否啟用,enable表示啟用,disable表示不啟用,可以手動設定也可以通過sql來進行設定; on completion設定為“PRESERVE”。

“計劃”中標籤中,主要是設定定時器的頻率和開始結束時間。AT表示,從當前mysql資料庫時間開始(這個時間是從啟動器啟用開始,即當狀態為“ENABLE”時),根據一定頻率的執行;EVERY是自訂開始時間和結束時間;相對來書EVERY比較靈活,使用方便。

最後,當然是設定定時器事件的狀態。

在上一步中,我們無論是sql建立還是用戶端建立都可以設定狀態,但是當我們沒有設定狀態或者說關閉定時器事件的時候,就需要執行sql

ALTER EVENT eventJob ON  COMPLETION PRESERVE ENABLE;   ---- 開啟事件
ALTER EVENTeventJob ON  COMPLETION PRESERVE DISABLE;  ---- 關閉事件

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

相關文章

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.