1. 程式人生 > >Mysql 檢視定時器 開啟定時器 設定定時器時間

Mysql 檢視定時器 開啟定時器 設定定時器時間

1.檢視是否開啟evevt與開啟evevt。

1.1、MySQL evevt功能預設是關閉的,可以使用下面的語句來看evevt的狀態,如果是OFF或者0,表示是關閉的。
              show VARIABLES LIKE '%sche%';
1.2、開啟evevt功能
            SET GLOBAL event_scheduler = 1;
2.建立定時器的過程
2.1、建立測試表test
drop table if exists test;
create table test
(
id int(11) not null auto_increment primary key,
time datetime not null
) engine=innodb default charset=utf8;
2.2、建立evevt要呼叫的儲存過程test_proce
delimiter //
drop procedure if exists test_proce//
create procedure test_proce()
begin
insert into test(time) values(now());
end//
delimiter ;
2.3、開啟evevt(要使定時起作用,MySQL的常量GLOBAL event_scheduler必須為on或者是1)
執行show variables like 'event_scheduler';檢視evevt是否開啟;
若沒開啟執行set global event_scheduler='on';
2.4、建立事件test_event(其作用:每隔一秒自動呼叫test_proce()儲存過程)
drop event if exists test_event;
create event test_event
on schedule every 1 second
on completion preserve disable
do call test_proce();
2.5、開啟事件test_event
alter event test_event on completion preserve enable;
2.6、關閉事件test_event
alter event test_event on completion preserve disable;
2.7、查看錶test
select * from test;

3.檢視自己建立的event
如果要檢視更加詳細的資訊,你需要root使用者的授權,如果是你自己的資料庫你可以用下面語句檢視
select * from  mysql.event;
下面的我的evevt的檢視結果
mysql建立定時器(event),檢視定時器,開啟定時器,設定定時器時間

4.event的時間設定
設定event很簡單,但是麻煩的是如何設定執行的時間,網上找了一些,自己總結了一下。
先看語句,如下面這個
     CREATE EVENT test_event ON SCHEDULE EVERY 1 DAY STARTS '2012-09-24 00:00:00'
     ON COMPLETION PRESERVE ENABLE DO CALL test_procedure();
EVERY 後面的是時間間隔,可以選 1 second,3 minute,5 hour,9 day,1 month,1 quarter(季度),1 year 
從2013年1月13號0點開始,每天執行一次
ON SCHEDULE EVERY 1 DAY STARTS '2013-01-13 00:00:00'
從現在開始每隔九天定時執行
ON SCHEDULE EVERY 9 DAY STARTS NOW() ;
每個月的一號凌晨1 點執行
on schedule every 1 month starts date_add(date_add(date_sub(curdate(),interval day(curdate())-1 day),interval 1 month),interval 1 hour);
每個季度一號的凌晨1點執行
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 1 hour);
每年1月1號凌晨1點執行
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 1 hour);