程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL Event Scheduler(事宜調劑器)

MySQL Event Scheduler(事宜調劑器)

編輯:MySQL綜合教程

MySQL Event Scheduler(事宜調劑器)。本站提示廣大學習愛好者:(MySQL Event Scheduler(事宜調劑器))文章只能為提供參考,不一定能成為您想要的結果。以下是MySQL Event Scheduler(事宜調劑器)正文


1、概述
  事宜調劑器是在 MySQL 5.1 中新增的另外一個特點功效,可以作為准時義務調劑器,代替部門本來只能用操作體系義務調劑器能力完成的准時功>能。例如,Linux 中的 crontabe 只能准確到每分鐘履行一次,而 MySQL 的事宜調劑器則可以完成每秒鐘履行一個義務,這在一些對及時性要>求較高的情況下就異常適用了。
  事宜調劑器是准時觸發履行的,在這個角度上也能夠稱作是"暫時的觸發器"。觸發器只是針對某個表發生的事宜履行一些語句,而事宜調劑器則是在某一個(距離)時光履行一些語句。事宜是由一個特定的線程來治理的,也就是所謂的"事宜調劑器"。啟用事宜調劑器後,具有 SUPER 權限的賬戶履行 SHOW PROCESSLIST 便可以看到這個線程了。經由過程設定全局變量event_scheduler 的值便可靜態的掌握事宜調劑器能否啟用。

(root:localhost:)test> SET GLOBAL event_scheduler = ON;
(root:localhost:)test> show processlist\G
*************************** 4. row ***************************
Id: 46147
User: event_scheduler
Host: localhost
db: NULL
Command: Daemon
Time: 1
State: Waiting on empty queue
Info: NULL

  如上,該線程的一切者是 event_scheduler。
  2、運用案例
  本案例是應用 event scheduler 的特征,每秒鐘挪用一次存儲進程,用於斷定 SLAVE 能否正常運轉,假如發明 SLAVE 封閉了,疏忽 0 次毛病,然後從新啟動 SLAVE。
  起首創立存儲進程
delimiter //

create procedure `Slave_Monitor`()
begin
SELECT VARIABLE_VALUE INTO @SLAVE_STATUS
FROM information_schema.GLOBAL_STATUS
WHERE VARIABLE_NAME='SLAVE_RUNNING';
IF ('ON' != @SLAVE_STATUS) THEN
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=0;
SLAVE START;
END IF;
end; //
delimiter ;

  因為存儲進程中沒法挪用相似 SHOW SLAVE STATUS 如許的語句,是以沒法獲得確實的復制毛病信息和毛病代碼,不克不及進一步的處置 SLAVE 停滯的各類情形。
  接著,創立義務

CREATE EVENT IF NOT EXISTS `Slave_Monitor`
ON SCHEDULE EVERY 5 SECOND
ON COMPLETION PRESERVE
DO
CALL Slave_Monitor();

  創立了一個義務,每 5秒鐘 履行一次,義務停止後照舊保存該義務,而不是刪除。固然了,在本例中的義務不會停止,除非將它手動制止了。
  假如在運轉中想要暫時封閉一下某個義務,履行 ALTER EVENT 語句便可:

(root:localhost:)test> alter event `Slave_Monitor` ON
COMPLETION PRESERVE DISABLE;
(root:localhost:)test> alter event `Slave_Monitor` ON
COMPLETION PRESERVE ENABLE;
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved