mysql 5.1以上支援定時任務。
show variables like 'event_scheduler'; 檢查是否已開啟該功能
開啟計畫任務功能:
set global event_scheduler = 1;
或set global event_scheduler = on;
或者my.ini or my.cnf 中的
[mysqld]
新增 event_scheduler=on
先來看一下它的語法:
create event [if not exists] event_name
on scheduleschedule
[on completion [not] preserve]
[enable | disable]
[comment 'comment']
do sql_statement;
schedule:
at timestamp [+ interval interval]
| every interval [starts timestamp] [ends timestamp]
interval:
quantity
#單次計畫任務:at 時戳desable 關閉事件
5.comment 注釋
6.do sql_statement 執行的sql語句
use test;
create table aaa (timeline timestamp);
create event e_test_insert
on schedule every 1 second
do insert into test.aaa values (current_timestamp);
等待3秒鐘後,再執行查詢看看:
mysql> select * from aaa;
+---------------------+
| timeline |
+---------------------+
| 2007-07-18 20:44:26 |
| 2007-07-18 20:44:27 |
| 2007-07-18 20:44:28 |
+---------------------+
2) 5天後清空test表:
create event e_test
on schedule at current_timestamp + interval 5 day
do truncate table test.aaa;
3) 2023年7月20日12點整清空test表:
create event e_test
on schedule at timestamp '2007-07-20 12:00:00'
do truncate table test.aaa;
4) 每天定時清空test表:
create event e_test
on schedule every 1 day
do truncate table test.aaa;
5) 5天後開啟每天定時清空test表:
create event e_test
on schedule every 1 day
starts current_timestamp + interval 5 day
do truncate table test.aaa;
6) 每天定時清空test表,5天後停止執行:
create event e_test
on schedule every 1 day
ends current_timestamp + interval 5 day
do truncate table test.aaa;
7) 5天後開啟每天定時清空test表,乙個月後停止執行:
create event e_test
on schedule every 1 day
starts current_timestamp + interval 5 day
ends current_timestamp + interval 1 month
do truncate table test.aaa;
[on completion [not] preserve]可以設定這個事件是執行一次還是持久執行,預設為not preserve。
8) 每天定時清空test表(只執行一次,任務完成後就終止該事件):
create event e_test
on schedule every 1 day
on completion not preserve
do truncate table test.aaa;
[enable | disable]可是設定該事件建立後狀態是否開啟或關閉,預設為enable。
[comment 『comment』]可以給該事件加上注釋。
三、修改事件(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;
四、刪除事件(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;
create event test
on schedule at '2007-09-01 12:00:00' + interval 1 day
on completion not preserve
do insert into yyy values('hhh','uuu');
解釋:從2007-09-01開始,每天對錶yyy在12:00:00進行乙個插入操作。而且只執行一次(on completion not preserve )
我的計畫任務為:
create event sysplan
on schedule at '2010-05-22 23:00:00' + interval 1 day
on completion not preserve
do truncate table bjproj.ae_tmp;
壓力測試資料生成:沒分鐘插入一條資料
create event add_product on schedule every 1 second do insert into test.products (`product`,`addtime`) values (rand()*50000+50000,current_timestamp) ;
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 表示當事件不會再發生的情況下,刪除事件 注意特定時間執行的事件,如果設定了該引數,執行完畢...