mysql定時器 教程 mysql定時任務

2021-10-17 17:04:47 字數 2606 閱讀 5473

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