Mysql定時任務

2021-10-25 22:32:47 字數 2562 閱讀 3397

一、mysql資料庫預設不開啟定時策略

檢視是否啟動:

showvariableslike'%event_sche%』

臨時設定開啟定時任務(重啟後恢復預設設定)

setglobal event_scheduler=1;

永久設定任務開啟(mysql資料庫啟動時預設開啟,設定完需重啟)

在mysql目錄的bin下,找到my.ini檔案,在[mysqld] 下新增:event_scheduler=on

二、建立儲存過程(將sql語句放置begin和end中間)

use test;   (test為資料庫名稱)

delimiter //

create procedure test_proce()

begin

insert into weuse(name,created_at,updated_at) values('hello',now(),now());

end//

delimiter ;

三、建立event定時任務

create event second_event

on schedule every 1 second (此處意思為每秒執行一次,minute為分鐘,day為天)

on completion preserve disable

do calltest_proce();(test_proce為第二步建立的儲存過程名稱)

四、檢視所有定時任務

select event_name,event_definition,interval_value,interval_field,statusfrom information_schema.events;

五、啟動或關閉定時任務

alter event second_event on completion preserve enable;//開啟定時任務

alter event second_event on completion preserve disable;//關閉定時任務

週期執行–關鍵字 every

單位有:second,minute,hour,day,week(周),quarter(季度),month,year

如:在具體某個時間執行–關鍵字 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執行

如:

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天

檢視事件

mysql> show events

mysql> show full events

mysql> select * from mysql.event;

mysql> select * from information_schema.events;

2> 修改事件 (alter event)

alter event event_name

[on schedule schedule]

[rename to new_event_name]

[on completion [not] preserve]

[comment ''comment'']

[enable | disable]

[do sql_statement]

1)  臨時關閉事件

alter event e_test disable;

2)  開啟事件

alter event e_test enable;

3)  將每天清空 test 表改為 5 天清空一次:

alter event e_test

on schedule every 5 day;

3> 刪除事件 (drop event)

語法很簡單,如下所示:

drop event [if exists] event_name

例如刪除前面建立的 e_test 事件

drop event e_test;

當然前提是這個事件存在,否則會產生 error 1513 (hy000): unknown event 錯誤,因此最好加上 if exists

drop event if exists e_test;

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

1.檢視是否開啟定時策略 show variables like event sche 若出現如下圖,則此時是關閉狀態 開啟定時策略 重啟無效 set global event scheduler 1 則需要在配置檔案my.ini的設定 重啟有效 mysqld event scheduler on ...

mysql 定時任務

檢視event是否開啟 複製 如下 show variables like sche 將事件計畫開啟 複製 如下 set global event scheduler 1 建立儲存過程test 複製 如下 create procedure test begin update examinfo set...

mysql定時任務

show variables like event scheduler 開啟定時任務 set global event scheduler on 定時更新 on completion not preserve 表示當事件不會再發生的情況下,刪除事件 注意特定時間執行的事件,如果設定了該引數,執行完畢...