概述
MySQL也有自己的事件調度器,簡單地可以理解為linux的crontab job,不過對于SQL應用來說,它的功能更齊全,也更易于維護。個人感覺如果數量創建太多的話,也可能影響DB性能,且不易調試。
MySQL事件調度器的主要內容
總開關
參數event_scheduler為事件調度器的總開關,一般來說設置為ON或者OFF就好,不建議設置成disabled,如果設置為ON,show processlist可看到該線程

創建,修改,查看等語法
關于如何創建,修改event這里不做敘述,創建語法如下,具體的含義可參考下面關于event信息表介紹。也可以參考官網文檔鏈接,http://dev.mysql.com/doc/refman/5.6/en/create-event.html

查看創建好的event,在進入當前db后,show create event xxx/G

event的信息查詢和含義
查看某個event的狀態信息,可查看mysql.event或者information_schema.events,或者簡單地切到當前DB后執行show events; 三者的內容基本一致,information_schema無法做了下數據復制,更改了下列名稱和starts時間以便更好的閱讀。這里已information_schema.events里的信息為例解釋

EVENT_CATALOG:一般都是def,不管
EVENT_SCHEMA:event所在的schema
EVENT_NAME:event的名稱
DEFINER:event的定義者,和定義這個event時,默認selectcurrent_user()的結果一致,如果該user有super權限,可以指定為其他用戶
TIME_ZONE:event使用的時區,默認是system,建議別做修改
EVENT_BODY:一般都是SQL,不用管
EVENT_DEFINITION:該event的內容,可以是具體的insert等SQL,也可以是一個調用存儲過程的操作
EVENT_TYPE:這個參數比較重要,定義的時候指定,有兩個值:RECURRING和ONE TIME,RECURRING表示只要符合條件就會重復執行,而ONE TIME只會調用一次
EXECUTE_AT: 針對one-time類型的event有效,如果是RECURRING類型的event一般為NULL,表示該event的預計執行時間
INTERVAL_VALUE:針對RECURRING類型的event有效,表示執行間隔長度
INTERVAL_FIELD:針對RECURRING類型的event有效,表示執行間隔的單位,一般是SECOND,DAY等值,可參考創建語法
SQL_MODE:當前event采用的SQL_MODE
STARTS:針對RECURRING類型的event有效,表示一個event從哪個時間點點開始執行,和one-time的EXECUTE_AT功能類似。為NULL表示一符合條件就開始執行
新聞熱點
疑難解答