mysql 定時器event學習
mysql從5.1開始支援event功能,類似oracle的job功能。有了這個功能之後我們就可以讓mysql自動的執行資料彙總等功能,不用像以前需要操作的支援了。如linux crontab功能 。
建立測試表
create table t
(v varchar(100) not null
) engine innodb default charset=utf8;
建立定時器
呼叫的儲存過程
delimiter $$
drop procedure if exists e_test $$
create procedure e_test()
begin
insert into t values('1');
end $$
delimiter ;
要使定時起作用
mysql的常量global event_scheduler必須為on或者是1
-- 檢視是否開啟定時器
show variables like '%sche%';
-- 開啟定時器 0:off 1:on
set global event_scheduler = 1;
-- 建立事件
--每隔一秒自動呼叫e_test()儲存過程
create event if not exists event_test
on schedule every 1 second
on completion preserve
do call e_test();
-- 開啟事件
alter event event_test on
completion preserve enable;
-- 關閉事件
alter event event_test on
completion preserve disable;
select * from t;
一些例子:
1從現在開始每隔九天定時執行
2create
event event134
onschedule every
9day
starts now()5on
completion preserve enable6do
7begin
8call total();
9end
1011
1213
14每個月的一號凌晨1 點執行
15create
event event2
1617
onschedule every
1month
starts date_add(date_add(date_sub(curdate(),interval
day(curdate())-1
day), interval
1month
),interval
1hour)
18on
completion preserve enable
19do
20begin
21call stat();
22end
2324
2526
每個季度一號的凌晨2點執行
2728
create
event total_season_event
2930
onschedule every
1quarter starts date_add(date_add(date( concat(
year
(curdate()),'-
',elt(quarter(curdate()),1,
4,7,
10),'-
',1)),interval
1quarter),interval
2hour)
31on
completion preserve enable
32do
33begin
34call season_stat();
35end
3637
3839
40每年1月1號凌晨四點執行
41create
event total_year_event
4243
onschedule every
1year
starts date_add(date(concat(
year
(curdate()) +1
,'-'
,1,'
-',1
)),interval
4hour)
44on
completion preserve enable
45do
46begin
47call year_stat();
48end
49
mysql的event和oralce的job還是有點不同的,這點讓筆者比較困擾
在進行按月,季,年進行自動呼叫儲存過程 時,為了測試可以 把系統改為年的最後一天,如2010-12-31 23:59:55;
這個oracle的job就會把月,季,年儲存過程執行一遍。但mysql改了系統時間了event也沒有定時執行。不知道各位大蝦有沒有什麼好辦法?可以解決這個問題。
MySQL 定時器EVENT學習
mysql從5.1開始支援event功能,類似oracle的job功能。有了這個功能之後我們就可以讓mysql自動的執行資料彙總等功能,不用像以前需要操作的支援了。如linux crontab功能。建立測試表 create table t v varchar 100 not null engine ...
MySQL 定時器EVENT學習
原文 mysql 定時器event學習 mysql從5.1開始支援event功能,類似oracle的job功能。有了這個功能之後我們就可以讓mysql自動的執行資料彙總等功能,不用像以前需要操作的支援了。如linux crontab功能。建立測試表 create table t v varchar ...
mysql建立定時器(event)
mysql建立定時器 event 步驟。1 select version 檢視當前使用的mysql版本。2 showvariables like sche 檢視是否開啟event與開啟event。event功能預設是關閉的,可以使用上面的語句來看event的狀態,如果是off或者0,表示是關閉的。3...