事件調度器是在 MySQL 5.1 中新增的另一個特色功能,可以作為定時任務調度器,取代部分原先只能用操作系統任務調度器才能完成的定時功>能.例如,Linux 中的 crontabe 只能精確到每分鐘執行一次,而 MySQL 的事件調度器則可以實現每秒鐘執行一個任務,這在一些對實時性要>求較高的環境下就非常實用了.
事件調度器是定時觸發執行的,在這個角度上也可以稱作是"臨時的觸發器".觸發器只是針對某個表產生的事件執行一些語句,而事件調度器則是在某一個(間隔)時間執行一些語句.事件是由一個特定的線程來管理的,也就是所謂的"事件調度器".啟用事件調度器后,擁有 SUPER 許可權的賬戶執行 SHOW PROCESSLIST 就可以看到這個線程了.通過設定全局變數event_scheduler 的值即可動態的控制事件調度器是否啟用.
(root:localhost:)test> SET GLOBAL event_scheduler = ON; (root:localhost:)test> show processlistG *************************** 4. row *************************** Id: 46147 User: event_scheduler Host: localhost db: NULL Command: Daemon Time: 1 State: Waiting on empty queue Info: NULL
(root:localhost:)test> alter event `Slave_Monitor` ON COMPLETION PRESERVE DISABLE; (root:localhost:)test> alter event `Slave_Monitor` ON COMPLETION PRESERVE ENABLE;