詳解MySQL用事宜調劑器Event Scheduler創立准時義務。本站提示廣大學習愛好者:(詳解MySQL用事宜調劑器Event Scheduler創立准時義務)文章只能為提供參考,不一定能成為您想要的結果。以下是詳解MySQL用事宜調劑器Event Scheduler創立准時義務正文
媒介
事宜調劑器相當於操作體系中的准時義務(如:Linux中的cron、Window中的籌劃義務),但MySql的事宜調劑器可以准確到秒,關於一些及時性請求較高的數據處置異常有效。
1. 創立/修正事宜(EVENT)
在MySql中,創立一個新的調劑器應用CREATE EVENT,其語律例則以下:
CREATE [DEFINER = { user | CURRENT_USER }] EVENT [IF NOT EXISTS] event_name ON SCHEDULE schedule [ON COMPLETION [NOT] PRESERVE] [ENABLE | DISABLE | DISABLE ON SLAVE] [COMMENT 'comment'] DO event_body;
在以上語句中,包括以下參數:
1、event_name
- 事宜名,可所以任何合的MySql標識符,不克不及超64個字符。
創立事宜時,可以同時指定Schema
,語法構造為:schema_name.event_name
2、schedule
- 調劑規矩,劃定事宜的履行時光與履行規矩。是一個可包括以下值的子語句:
schedule: AT timestamp [+ INTERVAL interval] ... | EVERY interval [STARTS timestamp [+ INTERVAL interval] ...] [ENDS timestamp [+ INTERVAL interval] ...] interval: quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE | WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE | DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}
3、event_body
- 事宜體,可所以單行SQL語法,或是BEGIN……END語句塊
檢查已創立的事宜,可使用SHOW
語名:
SHOW EVENTS;
事宜的修正
關於已存在事宜調劑器,可使用ALTER
語句停止修正,語法構造以下:
ALTER [DEFINER = { user | CURRENT_USER }] EVENT event_name [ON SCHEDULE schedule] [ON COMPLETION [NOT] PRESERVE] [RENAME TO new_event_name] [ENABLE | DISABLE | DISABLE ON SLAVE] [COMMENT 'comment'] [DO event_body]
事宜的開啟與封閉實質是應用ALTER
語句修正已創立的事宜。如,封閉一個事宜:
ALTER EVENT e_test ON COMPLETION PRESERVE ENABLE;
開啟一個事宜:
ALTER EVENT e_test ON COMPLETION PRESERVE DISABLE;
一些事宜應用示例
一個最簡略的示例,將myschema.mytable
表的mycol
列,每小時自增1:
CREATE EVENT myevent ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO UPDATE myschema.mytable SET mycol = mycol + 1;
如許,我們就創立一個名為myevent
的事宜,它會在事宜創立後每小時履行一次。設置的履行規矩等價於:
CREATE EVENT myevent ON SCHEDULE EVERY 1 HOUR STARTS CURRENT_TIMESTAMP DO UPDATE myschema.mytable SET mycol = mycol + 1;
假如須要距離必定時光再開啟事務,如,1天後開啟:
CREATE EVENT myevent ON SCHEDULE EVERY 1 HOUR STARTS CURRENT_TIMESTAMP + INTERVAL 1 DAY DO UPDATE myschema.mytable SET mycol = mycol + 1;
DO
履行的SQL可所以一個語句塊,如:
DELIMITER // CREATE EVENT e ON SCHEDULE EVERY 5 SECOND DO BEGIN DECLARE v INTEGER; DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN END; SET v = 0; WHILE v < 5 DO INSERT INTO t1 VALUES (0); UPDATE t2 SET s1 = s1 + 1; SET v = v + 1; END WHILE; END // DELIMITER ;
2. 事宜調劑器的設置裝備擺設
2.1 事宜調劑器狀況
要包管創立的事宜能正常履行,起首應當開啟事宜調劑器,可以經由過程以下3種方法檢查調劑器狀況:
SHOW VARIABLES LIKE 'event_scheduler'; SELECT @@event_scheduler; SHOW PROCESSLIST;
檢查某個事宜的履行情形:
SELECT * FROM information_schema.EVENTS;
以上會輸入當關Schema
中一切的事宜信息,可以先經由過程DESC information_schema.EVENTS;
檢查輸入字段,再檢查所須要的信息。如,我只想看事宜名及最初履行時光:
SELECT EVENT_NAME, LAST_EXECUTED FROM information_schema.EVENTS;
2.2 開啟/封閉事宜調劑器
假如事宜調劑器未開啟,可以經由過程以下4種方法啟用:
SET GLOBAL event_scheduler = 1; SET @@global.event_scheduler = 1; SET GLOBAL event_scheduler = ON; SET @@global.event_scheduler = ON;
1或ON表現設置為開啟狀況。異樣的,假如須要封閉只需將值0或OFF便可。
總結
以上就是在MySQL頂用事宜調劑器Event Scheduler創立准時義務的全體內容,願望本文的內容對年夜家進修應用MySQL能有所贊助。