事件计划程序配置
事件由特殊的事件调度程序线程执行;当我们引用事件调度程序时,实际上是指该线程。运行时,事件调度程序线程及其当前状态可以由具有PROCESS输出特权的用户看到SHOW PROCESSLIST,如下面的讨论所示。
全局event_scheduler系统变量确定事件调度程序是否已启用并在服务器上运行。它具有这3个值之一,这会影响此处所述的事件调度。默认值为ON。
- ON:事件调度程序已启动;事件调度程序线程运行并执行所有调度的事件。- 当Event Scheduler为时 - ON,事件调度程序线程- SHOW PROCESSLIST作为守护进程在输出中列出,其状态如下所示:- mysql> - SHOW - PROCESSLIST \G *************************** 1. row*************************** Id: 1 User: root Host: localhost db: NULL Command: Query Time: 0 State: NULL Info: show processlist *************************** 2. row*************************** Id: 2 User: event_scheduler Host: localhost db: NULL Command: Daemon Time: 3 State: Waiting for next activation Info: NULL 2 rows in set (0.00 sec)- 事件调度可以通过设定的值来停止 - event_scheduler对- OFF。
- OFF:事件计划程序已停止。事件调度程序线程未运行,未显示在的输出中- SHOW PROCESSLIST,并且未执行任何已调度的事件。- 当事件调度停止( - event_scheduler是- OFF),它可以通过设置的值开始- event_scheduler到- ON。(请参阅下一项。)
- DISABLED:此值使事件计划程序无法运行。当Event Scheduler为时- DISABLED,事件调度程序线程不会运行(因此不会出现在的输出中- SHOW PROCESSLIST)。此外,事件调度程序状态不能在运行时更改。
如果事件计划程序的状态尚未设置为DISABLED,event_scheduler则可以在ON和之间切换OFF(使用SET)。也可以使用0的OFF,而1对于ON设置该变量时。因此,可以在mysql客户端中使用以下4条语句中的任何一条打开事件调度程序:
SET GLOBAL event_scheduler =ON ;SET @@GLOBAL.event_scheduler =ON ;SET GLOBAL event_scheduler = 1;SET @@GLOBAL.event_scheduler = 1;
同样,以下4条语句中的任何一条均可用于关闭事件计划程序:
SET GLOBAL event_scheduler = OFF;SET @@GLOBAL.event_scheduler = OFF;SET GLOBAL event_scheduler = 0;SET @@GLOBAL.event_scheduler = 0;
虽然ON与OFF具有数字等同物,显示该值event_scheduler通过SELECT或SHOW VARIABLES总是之一OFF,ON或DISABLED。DISABLED没有等效的数值。出于这个原因,ON并且OFF通常是优选的超过1和0设置此变量时。
请注意,尝试在event_scheduler未将其指定为全局变量的情况下进行设置会导致错误:
mysql<SET @@event_scheduler = OFF; ERROR 1229 (HY000): Variable 'event_scheduler' is a GLOBAL variable and should be set with SET GLOBAL
重要可以将事件计划程序设置为
DISABLED仅在服务器启动时。如果event_scheduler为ON或OFF,则无法DISABLED在运行时将其设置为。另外,如果将事件计划程序设置为DISABLED启动时,则无法event_scheduler在运行时更改其值。
若要禁用事件计划程序,请使用以下两种方法之一:
- 作为启动服务器时的命令行选项: - --event-scheduler=DISABLED 
- 在服务器配置文件( - my.cnf或- my.ini在Windows系统上)中,包括服务器将在其上读取的行(例如,在- [mysqld]部分中):- event_scheduler=DISABLED 
要启用事件计划程序,请在不使用--event-scheduler=DISABLED命令行选项的情况下,或者在event-scheduler=DISABLED适当时删除或注释掉服务器配置文件中包含的行后,重新启动服务器。或者,您可以在启动服务器时使用ON(或1)或OFF(或0)代替该DISABLED值。
注意当您可以发出事件操作语句
event_scheduler设置为DISABLED。在这种情况下,不会生成任何警告或错误(前提是该语句本身有效)。但是,在将此变量设置为ON(或1)之前,计划的事件无法执行。完成此操作后,事件调度程序线程将执行其调度条件得到满足的所有事件。
使用该--skip-grant-tables选项启动MySQL服务器会导致event_scheduler设置为DISABLED,从而覆盖在命令行或my.cnfor my.ini文件中设置的任何其他值(错误#26807)。
有关用于创建,更改和删除事件的SQL语句,请参见“事件语法”。
MySQL EVENTS在INFORMATION_SCHEMA数据库中提供了一个表。可以查询该表以获得有关服务器上已定义的计划事件的信息。有关更多信息,请参见“事件元数据”和“ INFORMATION_SCHEMA事件表”。
有关事件调度和MySQL特权系统的信息,请参见“事件调度程序和MySQL特权”。
