mysql 事件(Event) 總結

來源:互聯網
上載者:User

標籤:優缺點   ...   總結   管理   關閉   tin   結束   任務計劃   作業系統   

1 事件簡介

    事件(event)是MySQL在相應的時刻調用的過程式資料庫物件。一個事件可調用一次,也可周期性的啟動,它由一個特定的線程來管理的,也就是所謂的“事件調度器”。

    事件和觸發器類似,都是在某些事情發生的時候啟動。當資料庫上啟動一條語句的時候,觸發器就啟動了,而事件是根據調度事件來啟動的。由於他們彼此相似,所以事件也稱為臨時性觸發器。

    事件取代了原先只能由作業系統的計劃任務來執行的工作,而且MySQL的事件調度器可以精確到每秒鐘執行一個任務,而作業系統的計劃任務(如:Linux下的CRON或Windows下的任務計劃)只能精確到每分鐘執行一次。

2 事件的優缺點
    2.1 優點

    一些對資料定時性操作不再依賴外部程式,而直接使用資料庫本身提供的功能。

    可以實現每秒鐘執行一個任務,這在一些對即時性要求較高的環境下就非常實用了。

    2.2 缺點
    定時觸發,不可以調用。

3 建立事件

    一條create event語句建立一個事件。每個事件由兩個主要部分組成,第一部分是事件調度(event schedule),表示事件何時啟動以及按什麼頻率啟動,第二部分是事件動作(event action ),這是事件啟動時執行的代碼,事件的動作包含一條SQL語句,它可能是一個簡單地insert或者update語句,也可以使一個預存程序或者benin...end語句塊,這兩種情況允許我們執行多條SQL。

    一個事件可以是活動(開啟)的或停止(關閉)的,活動意味著事件調度器檢查事件動作是否必須調用,停止意味著事件的聲明儲存在目錄中,但調度器不會檢查它是否應該調用。在一個事件建立之後,它立即變為活動的,一個活動的事件可以執行一次或者多次。

4 建立事件的文法

迴圈執行事件

CREATE DEFINER=`root`@`localhost` //使用者EVENT `test` //事件的名稱ON SCHEDULE EVERY 60 MINUTE_SECOND //60秒迴圈一次   SCHEDULE EVERY ‘0:0:1‘ HOUR_SECOND    SCHEDULE EVERY ‘0:1‘ HOUR_MINUTE  (不同的計時方式)STARTS ‘2017-11-01 00:00:00.000000‘ ENDS ‘2017-11-30 00:00:00.000000‘ // 開始時間,結束時間ON COMPLETION PRESERVE ENABLE //到期後禁用事件而不刪除DO BEGIN //執行的內容insert into events_list values(‘event_now‘, now());insert into events_list values(‘event_now1‘, now()); END

執行多條sql語句時,用用begin...end包起來

只執行一次

CREATE DEFINER=`root`@`localhost` EVENT `test2` ON SCHEDULE AT ‘2017-11-17 00:00:00.000000‘ // 只執行一次 ON COMPLETION PRESERVE ENABLE DO insert into events_list values(‘event_now‘, now());

 

phpmyadmin中可以直接建立事件

5 開啟關閉事件調度器

show variables like ‘%event_scheduler%‘;

通過命令列

  1. SET GLOBAL event_scheduler = ON;  
  2. SET @@global.event_scheduler = ON;  
  3. SET GLOBAL event_scheduler = 1;  
  4. SET @@global.event_scheduler = 1;  

通過設定檔my.cnf

  event_scheduler = 1 #或者ON

查看調度器線程

  show processlist;

mysql> show processlist;  +----+-----------------+-----------+------+---------+------+------------------------+------------------+  | Id | User            | Host      | db   | Command | Time | State                  | Info             |  +----+-----------------+-----------+------+---------+------+------------------------+------------------+  |  2 | root            | localhost | NULL | Query   |    0 | NULL                   | show processlist |  |  3 | event_scheduler | localhost | NULL | Daemon  |    6 | Waiting on empty queue | NULL             |  +----+-----------------+-----------+------+---------+------+------------------------+----------------

  event_scheduler 線程執行中

mysql 事件(Event) 總結

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.