mysql 常用元件之定時器

2022-08-30 04:09:09 字數 2368 閱讀 7421

定時器主要用於定時的執行一次或者迴圈執行一條sql,在實際場景上,例如,定期清理資料表,定期匯出日誌檔案等等場景。本次公司晚上維護系統,晚上需要定期掛維護頁,用到了定時器,這裡簡單總結一下。

mysql event 功能預設是關閉的,可以使用下面的語句來看 event 的狀態,如果是 off 或者 0,表示是關閉的。

如果未開啟定時器,執行以下命令開啟定時器:

set global event_scheduler = 1;
set global event_scheduler = 0;
建立定時器 sql 模板:

delimiter $$

-- set global event_scheduler = on$$ -- required for event to execute but not create

create /*[definer = ]*/ event `dbname`.`eventname` -- 事件名

on schedule

/* uncomment the example below you want to use */

-- scheduleexample 1: run once 只執行一次

-- at 'yyyy-mm-dd hh:mm.ss'/current_timestamp

-- scheduleexample 2: run at intervals forever after creation 建立完後週期性執行

-- every 1 [hour|month|week|day|minute|...]

-- scheduleexample 3: specified start time, end time and interval for execution 指定開始和結束時間,並在期間內週期性的執行

/*every 1 [hour|month|week|day|minute|...]

starts current_timestamp/'yyyy-mm-dd hh:mm.ss'

ends current_timestamp/'yyyy-mm-dd hh:mm.ss' */

/*[on completion [not] preserve] -- 時間完成後是否刪除事件

[enable | disable] -- 是否立即生效

[comment 'comment']*/

do begin

(sql_statements) -- 需要週期性執行的 sql 語句

end$$

delimiter ;

delimiter $$這個是將mysql中以 ; 結尾的規定修改為以 $$ 為語句結束符,因為儲存過程裡可以有多條 sql 語句,裡面的 sql 語句都以 ; 結尾,如果回車了那麼系統會當做 sql 語句直接執行了,我們希望的是先定義這一系列 sql 語句而先不執行,所以要改下操作結束符。當然你在改後一定要改回來,大家可以看到最後一行有對應的修改回來的語句。

如果需要週期性執行的語句也可用儲存過程來代替,使用do call procedure()語句來代替。

設定定時器事件的生效與否語句:

alter event event_minute disable;  # 關閉事件

alter event event_minute enable; # 啟用事件

1.從現在開始每隔九天定時執行

on schedule every 9 day starts now() ;
2.每個月的一號凌晨 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);
3.每個季度一號的凌晨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);

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

mysql 定時器概念 MySQL 定時器

mysql定時器是系統給提供了event,而oracle裡面的定時器是系統給提供的job。廢話少說,下面建立表 create table mytable id int auto increment not null,name varchar 100 not null default introduc...