自 mysql5.1.6起,增加了乙個非常有特色的功能–事件排程器(event scheduler),可以用做定時執行某些特定任務(例如:刪除記錄、對資料進行彙總等等),來取代原先只能由作業系統的計畫任務來執行的工作。更得 一提的是mysql的事件排程器可以精確到每秒鐘執
自 mysql5.1.6起,增加了乙個非常有特色的功能–事件排程器(event scheduler),可以用做定時執行某些特定任務(例如:刪除記錄、對資料進行彙總等等),來取代原先只能由作業系統的計畫任務來執行的工作。更值得 一提的是mysql的事件排程器可以精確到每秒鐘執行乙個任務,而作業系統的計畫任務(如:linux下的cron或windows下的任務計畫)只能精
確到每分鐘執行一次。
1、檢視是否開啟定時任務:
show variables like 'event_scheduler';
2、開啟定時任務://無需重啟
set global event_scheduler = on;
3、定義定時任務語法:
create event [if not exists] event_name
on schedule schedule
[on completion [not] preserve]
[enable | disable]
[comment 'comment']
do sql_statement;
-schedule說明:
at timestamp [+ interval interval]
| every interval [starts timestamp] [ends timestamp]
interval:
quantity
- on completion preserve 說明:
如在定義event的時候有指定ends,那麼是否當到期的時候,
假如使用了on completion preserve,這樣這個event還是存在的
但是使用on completion not preserve,這樣event就自動刪除了
4、例項:
1)從現在開始每隔九天定時執行
create event event1
on schedule every 9 day starts now()
on completion preserve enable
dobegin
call total();
end2)每個月的一號凌晨1 點執行
create event event2
on schedule every 1 month starts date_add(date_add(date_sub(curdate(),interval day(curdate())-1 day), interval 1 month),interval 1 hour)
on completion preserve enable
dobegin
call stat();
end3)每個季度一號的凌晨2點執行
create event total_season_event
on schedule every 1 quarter starts date_add(date_add(date( concat(year(curdate()),'-',elt(quarter(curdate()),1,4,7,10),'-',1)),interval 1 quarter),interval 2 hour)
on completion preserve enable
dobegin
call season_stat();
end4)每年1月1號凌晨四點執行
create event total_year_event
on schedule every 1 year starts date_add(date(concat(year(curdate()) + 1,'-',1,'-',1)),interval 4 hour)
on completion preserve enable
dobegin
call year_stat();
end5)每秒插入一條資料
createtable aaa (timeline timestamp);
create event e_test_insert
onschedule every 1 second
do insert into test.aaa values(current_timestamp);
注:mysql的event在進行按月,季,年進行自動呼叫儲存過程時,為了測試可以把系統改為年的最後一天,如2010-12-31 23:59:55;
這個oracle的job就會把月,季,年儲存過程執行一遍。但mysql改了系統時間了event也沒有定時執行。不知道各位大蝦有沒有什麼好辦法?可以解決這個問題。
5、檢視定時任務:
select * from information_schema.events;
6、刪除定時任務:(最好加上庫名)
mysql定時器 教程 Mysql 定時器
定時任務 週期任務 檢視命令 show variables like event sche 顯示的event scheduler為off時用以下命令開啟 set global event scheduler 1 注意 以上的改法在資料庫重啟後將會恢復為原來狀態,要想資料庫重啟後也可以讓event s...
mysql 定時器概念 MySQL定時器
mysql定時器 建立測試表 create table t v varchar 100 not null engine innodb default charset utf8 建立定時器 呼叫的儲存過程 delimiter drop procedure if exists e test create...
mysql 定時器概念 Mysql 定時器
定時任務 週期任務 檢視命令 show variables like event sche 顯示的event scheduler為off時用以下命令開啟 set global event scheduler 1 注意 以上的改法在資料庫重啟後將會恢復為原來狀態,要想資料庫重啟後也可以讓event s...