mysql 定時任務 生效 mysql定時任務

2021-10-17 13:56:16 字數 2267 閱讀 1284

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...