日期:2014-05-16  浏览次数:20826 次

(MYSQL EVENT 学习笔记_01)Event Scheduler Configuration
原文见MySQL官方文档http://dev.mysql.com/doc/refman/5.1/en/events-configuration.html
估计MySQL迟早会发布中文版的文档,所以我还是只写一些摘要吧,另外,文中的专有名字就不翻译了,否则反倒弄巧成拙。
Event Scheduler Configuration 读后感
MySQL的Event是通过event scheduler thread(可称之为事件计划线程)来运行的。
可通过SHOW PROCESSLIST来警醒查看该线程及其状态;(当然,得拥有PROCESS权限)
MySQL有一个event_scheduler系统变量,负责管理Event Scheduler是否运行。从5.1.12开始,它有三个值可供选择:
? OFF  表示Event Scheduler已停止,表示event scheduler thread不在运行,所以在show processlist的结果中也无法看到
? ON  表示Event Scheduler已开启,从show processlist的结果中可看到其为一dadmon process.
? DISABLED  表示Event Scheduler不在工作,同样在Show processlist中无法查看到,并且该线程的状态也无法修改
当Event Scheduler的状态不属于DISABLED时,其值可以在ON和OFF间切换(使用SET命令):
开启:
SET GLOBAL event_scheduler = ON;
SET @@global.event_scheduler = ON;
SET GLOBAL event_scheduler = 1;
SET @@global.event_scheduler = 1;


     关闭:
SET GLOBAL event_scheduler = OFF;
SET @@global.event_scheduler = OFF;
SET GLOBAL event_scheduler = 0;
SET @@global.event_scheduler = 0;


附件为我开启Scheduler Thread后查看到的process list,其中可以看到Scheduler Thread。

注意:
只有在服务器开启时才能将Event Scheduler设置为DISABLED,如果event scheduler是ON或者OFF,则不能在运行时将其设置为DISABLED。当然,如果已经在服务开启前将其设置为DISABLED了,则无法在运行时将event  scheduler修改为ON或者OFF。


有两种方法可以在启动时关闭Event Scheduler:
1. 在命令行中加入 
--event-scheduler=DISABLED

2. 在配置文件(my.cnf or my.ini)中加入(修改)
event_scheduler=DISABLED

注:在5.1.11版本中,event scheduler还有一个 Suspended的状态,并且在ON,OFF,SUSPENDED之间的切换有可能需要重启服务,以后遇到需要注意此区别…