自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

MySQL 事件調(diào)度器示例演示

數(shù)據(jù)庫(kù) MySQL
以下的文章主要是對(duì)MySQL 事件調(diào)度器(Event Scheduler)的實(shí)際應(yīng)用的描述,本文是以示例演示的方式來(lái)引出其實(shí)際操作。

我們大家都知道MySQL 事件調(diào)度器是在 MySQL 5.1 中新生的一個(gè)較為特殊的功能,其可以作為定時(shí)任務(wù)調(diào)度器,來(lái)取代部分原先只能用操作系統(tǒng)任務(wù)調(diào)度器才能完成的定時(shí)功能。望以下的文章會(huì)給你提供更全面的知識(shí)。

一、概述

事件調(diào)度器是在 MySQL 5.1 中新增的另一個(gè)特色功能,可以作為定時(shí)任務(wù)調(diào)度器,取代部分原先只能用操作系統(tǒng)任務(wù)調(diào)度器才能完成的定時(shí)功>能。例如,Linux 中的 crontabe 只能精確到每分鐘執(zhí)行一次,而 MySQL 事件調(diào)度器則可以實(shí)現(xiàn)每秒鐘執(zhí)行一個(gè)任務(wù),這在一些對(duì)實(shí)時(shí)性要>求較高的環(huán)境下就非常實(shí)用了。

事件調(diào)度器是定時(shí)觸發(fā)執(zhí)行的,在這個(gè)角度上也可以稱(chēng)作是"臨時(shí)的觸發(fā)器"。觸發(fā)器只是針對(duì)某個(gè)表產(chǎn)生的事件執(zhí)行一些語(yǔ)句,而事件調(diào)度器則是在某一個(gè)(間隔)時(shí)間執(zhí)行一些語(yǔ)句。事件是由一個(gè)特定的線程來(lái)管理的,也就是所謂的"事件調(diào)度器"。啟用事件調(diào)度器后,擁有 SUPER 權(quán)限的賬戶(hù)執(zhí)行 SHOW PROCESSLIST 就可以看到這個(gè)線程了。通過(guò)設(shè)定全局變量event_scheduler 的值即可動(dòng)態(tài)的控制MySQL 事件調(diào)度器是否啟用。

  1. (root:localhost:)test> SET GLOBAL event_scheduler = ON;   
  2. (root:localhost:)test> show processlist\G  

4. row

  1. Id: 46147   
  2. User: event_scheduler   
  3. Host: localhost   
  4. db: NULL   
  5. Command: Daemon   
  6. Time: 1   
  7. State: Waiting on empty queue   
  8. Info: NULL 

 

如上,該線程的所有者是 event_scheduler。

二、MySQL 事件調(diào)度器的應(yīng)用案例

本案例是利用 event scheduler 的特性,每秒鐘調(diào)用一次存儲(chǔ)過(guò)程,用于判斷 SLAVE 是否正常運(yùn)行,如果發(fā)現(xiàn) SLAVE 關(guān)閉了,忽略 0 次錯(cuò)誤,然后重新啟動(dòng) SLAVE。

首先創(chuàng)建存儲(chǔ)過(guò)程

 

  1. delimiter //   
  2. create procedure `Slave_Monitor`()   
  3. begin  
  4. SELECT VARIABLE_VALUE INTO @SLAVE_STATUS   
  5. FROM information_schema.GLOBAL_STATUS   
  6. WHERE VARIABLE_NAME='SLAVE_RUNNING';  
  7. IF ('ON' != @SLAVE_STATUS) THEN   
  8. SET GLOBAL SQL_SLAVE_SKIP_COUNTER=0;   
  9. SLAVE START;   
  10. END IF;  
  11. end; //   
  12. delimiter ;  

 

由于存儲(chǔ)過(guò)程中無(wú)法調(diào)用類(lèi)似 SHOW SLAVE STATUS 這樣的語(yǔ)句,因此無(wú)法得到確切的復(fù)制錯(cuò)誤信息和錯(cuò)誤代碼,不能進(jìn)一步的處理 SLAVE 停止的各種情況。

接著,創(chuàng)建任務(wù)

 

  1. CREATE EVENT IF NOT EXISTS `Slave_Monitor`   
  2. ON SCHEDULE EVERY 5 SECOND   
  3. ON COMPLETION PRESERVE   
  4. DO   
  5. CALL Slave_Monitor(); 

創(chuàng)建了一個(gè)任務(wù),每 5秒鐘 執(zhí)行一次,任務(wù)結(jié)束后依舊保留該任務(wù),而不是刪除。當(dāng)然了,在本例中的任務(wù)不會(huì)結(jié)束,除非將它手動(dòng)禁止了。

如果在運(yùn)行中想要臨時(shí)關(guān)閉一下某個(gè)任務(wù),執(zhí)行 ALTER EVENT 語(yǔ)句即可:

 

  1. (root:localhost:)test> alter event `Slave_Monitor` ON   
  2. COMPLETION PRESERVE DISABLE;   
  3. (root:localhost:)test> alter event `Slave_Monitor` ON   
  4. COMPLETION PRESERVE ENABLE; 

以上的相關(guān)內(nèi)容就是對(duì)MySQL 事件調(diào)度器(Event Scheduler) 的介紹,望你能有所收獲。

【編輯推薦】

  1. Ubuntu MySQL設(shè)置同步服務(wù)器
  2. Ubuntu mysql可以把data防止到內(nèi)存盤(pán)中
  3. CentOS系統(tǒng)MySQL優(yōu)化詳解
  4. CentOS系統(tǒng)5編譯安裝mysql-4.1.22
  5. CentOS系統(tǒng)操作mysql的常用命令
責(zé)任編輯:佚名 來(lái)源: cnblogs
相關(guān)推薦

2010-05-24 13:04:55

MySQL 事件調(diào)度器

2010-06-04 14:32:34

MySQL 觸發(fā)器in

2010-05-31 18:06:07

MySQL 觸發(fā)器

2010-05-26 17:57:44

MySQL 觸發(fā)器

2009-08-06 16:18:38

C#調(diào)用SQL存儲(chǔ)過(guò)程

2010-07-20 08:48:14

SQL Server

2009-11-27 15:13:00

PHP靜態(tài)變量stat

2009-11-03 11:06:40

VB.NET事件

2011-01-21 07:36:00

LinuxBFSCFS

2024-02-21 12:18:00

Java虛擬機(jī)JVM

2010-06-09 14:39:58

2010-10-12 09:41:26

mysql觸發(fā)器

2010-05-27 09:38:59

MySQL Grant

2021-05-12 14:40:32

模型人工智能 PyTorch

2017-07-19 15:19:19

數(shù)據(jù)庫(kù)DB分庫(kù)實(shí)施策略

2023-11-20 22:55:00

Goroutine調(diào)度器

2021-01-29 08:22:03

調(diào)度器Yarn架構(gòu)

2023-04-17 08:13:13

KubernetesPod

2011-01-13 13:59:14

2010-05-18 09:02:55

MySQL條件查詢(xún)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)