1. 檢視是否開啟定時策略
show variables like '%event_sche%';
若出現如下圖,則此時是關閉狀態
開啟定時策略(重啟無效)
set global event_scheduler =1;
則需要在配置檔案my.ini的設定(重啟有效)
[mysqld]
event_scheduler=on //這一行加入mysqld標籤下
2. 建立儲存過程
什麼是儲存過程
原生詞為procedure,實際上它的含義就是相當於我們物件導向裡的方法或者說是函式,在它裡面可以完成多個sql語句的操作,並且可以定義引數傳值等,與一般的單條sql語句的區別主要在這裡。 參考
建立儲存過程
mysql> delimiter //
mysql> create procedure test_proce()
> begin
> insert into weuse(name,created_at,updated_at) values('hello',now(),now());
> end//
mysql> delimiter ;
說明delimiter // 這個是將mysql中以;(分號)結尾的規定修改為以//(雙斜槓)為語句結束符,因為儲存過程裡可以有多條sql 語句,裡面的sql語句都以;號結尾。
下面的是一起輸入的,可以知道分別是建立儲存過程test_proce(),名稱可以隨便起的,然後是在begin –end之間是定義一系列sql語句的就可以了,記住最後end結尾要以之前修改後的結尾符結束。
3. 建立定時任務
create event second_event
on schedule every 1 second
on completion preserve disable
do call test_proce();
上面為整體**,敲完再寫分號
第一行create event day_event是建立名為second_event的事件,注意此處沒有括號
第二行是建立週期定時的規則,本處的意思是每秒鐘執行一次
第三行on completion preserve disable是表示建立後並不開始生效。
第四行do call test_proce()是該event(事件)的操作內容,表示呼叫我們剛剛建立的test_proce()儲存過程。
定時規則
週期執行–關鍵字 every
單位有:second,minute,hour,day,week(周),quarter(季度),month,year,
on schedule every 1 second //每秒執行1次
on schedule every 2 minute //每兩分鐘執行1次
on schedule every 3 day //每3天執行1次
在具體某個時間執行–關鍵字 at,如:
on schedule at current_timestamp()+interval 5 day //5天後執行
on schedule at current_timestamp()+interval 10 minute //10分鐘後執行
on schedule at '2016-10-01 21:50:00' //在2023年10月1日,晚上9點50執行
在某個時間段執行–關鍵字starts ends,如:
on schedule every 1 day starts current_timestamp()+interval 5 day ends current_timestamp()+interval 1 month //5天後開始每天都執行執行到下個月底
on schedule every 1 day ends current_timestamp()+interval 5 day //從現在起每天執行,執行5天
4. 檢視定時任務event(事件)
select event_name,event_definition,interval_value,interval_field,status from information_schema.events;
5. 開啟定時任務
alter event second_event on completion preserve enable;//開啟定時任務
alter event second_event on completion preserve disable;//關閉定時任務
6. 刪除定時任務(event)
drop event event_name;
celery定時任務不生效原因
最近有乙個新的任務需要在後台定時進行,於是使用了celery的定時器來實現,但是加了任務後,到設定的時間點時任務就是不會被觸發執行。定位了很多地方,最後發現是時間設定有問題。需求 早上7點 凌晨12點每30分鐘執行一次,於是我將任務定義成了這樣 sender.add periodic task cr...
Scheduled 定時任務不生效原因
經過一系列的排查發現,原來是測試過程中,測試先將服務啟動。然後再手動調整伺服器本地時間為22 59 00秒,等23點的時候,看定時任務是否執行。因為,spring的定時器是在服務啟動初始化的時候,便已經指定了下一次定時任務執行的時間,這時候手動去調整本地時間是沒有效果的。我們在檢視 中可以看到,sc...
mysql 定時任務
檢視event是否開啟 複製 如下 show variables like sche 將事件計畫開啟 複製 如下 set global event scheduler 1 建立儲存過程test 複製 如下 create procedure test begin update examinfo set...