事件由一个特殊的事件调度线程;当我们引用事件调度程序时,我们实际上引用的是这个线程。控件的用户可以在运行时看到事件调度程序线程及其当前状态过程
特权的输出显示PROCESSLIST
,如下面的讨论所示。
全球event_scheduler
系统变量确定是否启用事件调度器并在服务器上运行。它有以下值之一,影响事件调度,如下所述:
从
:停止事件调度器。的输出中没有显示事件调度器线程未运行显示PROCESSLIST
,并且没有执行计划的事件。从
是默认的event_scheduler
价值。当事件调度程序停止时(
event_scheduler
是从
),它可以通过设置的值来启动event_scheduler
来在
.(参见下一项)。在
:事件调度程序启动;事件调度器线程运行并执行所有计划的事件。当事件调度程序为
在
的输出中列出了事件调度器线程显示PROCESSLIST
作为一个守护进程,它的状态如下所示:mysql >显示PROCESSLIST \ G *************************** 1。行 *************************** Id: 1用户:根主持人:localhost db:零命令:查询时间:0状态:零信息:显示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
来从
.禁用
:此值使事件调度器不可操作。当事件调度程序为禁用
的输出中不会出现事件调度器线程显示PROCESSLIST
).此外,不能在运行时更改事件调度器状态。
如果未将事件调度器状态设置为禁用
,event_scheduler
可以在两者之间切换吗在
而且从
(使用集
).它也可以使用0
为从
,1
为在
当设置此变量时。因此,以下4个语句中的任何一个都可以用于mysql客户端打开事件调度程序:
SET GLOBAL event_scheduler = ON;设置@@GLOBAL。event_scheduler =;SET GLOBAL event_scheduler = 1;设置@@GLOBAL。event_scheduler = 1;
类似地,这4个语句中的任何一个都可以用来关闭事件调度程序:
SET GLOBAL event_scheduler = OFF;设置@@GLOBAL。event_scheduler =;SET GLOBAL event_scheduler = 0;设置@@GLOBAL。event_scheduler = 0;
虽然在
而且从
有数字等价物,显示的值为event_scheduler
通过选择
或显示变量
一直都是从
,在
,或禁用
.禁用
没有相应的数字.由于这个原因,在
而且从
通常优先于1
而且0
当设置此变量时。
注意,试图设置event_scheduler
不将其指定为全局变量会导致错误:
mysql< SET @@event_scheduler = OFF;变量'event_scheduler'是一个全局变量,应该用set GLOBAL设置
可以将事件调度器设置为禁用
仅在服务器启动时。如果event_scheduler
是在
或从
,你不能设置它禁用
在运行时。此外,如果事件调度器设置为禁用
在启动时,不能更改的值event_scheduler
在运行时。
要禁用事件调度器,请使用以下两种方法之一:
作为启动服务器时的命令行选项:
——event-scheduler =禁用
在服务器配置文件(
my.cnf
,或my.ini
在Windows系统上),包含服务器可以读取它的行(例如,在(mysqld)
部分):event_scheduler =禁用
要启用事件调度器,请重新启动服务器——event-scheduler =禁用
命令行选项,或者在删除或注释掉包含event-scheduler =禁用
在服务器配置文件中。或者,您也可以使用在
(或1
)或从
(或0
)代替禁用
值。
可以在以下情况下发出事件操作语句event_scheduler
被设置为禁用
.在这种情况下不会产生警告或错误(只要语句本身是有效的)。但是,在将此变量设置为之前,无法执行计划事件在
(或1
).一旦完成此操作,事件调度器线程将执行满足调度条件的所有事件。
启动MySQL服务器——skip-grant-tables
选择的原因event_scheduler
被设置为禁用
控件中设置的任何其他值my.cnf
或my.ini
文件(错误# 26807)。
有关用于创建、更改和删除事件的SQL语句,请参见第23.4.3节,“事件语法”.
MySQL提供了一个事件
表中INFORMATION_SCHEMA
数据库。通过查询该表,可以获取服务器上已定义的计划事件信息。看到第23.4.4节,“事件元数据”,第24.3.8节“信息模式事件表”,以查询更多资料。
有关事件调度和MySQL特权系统的信息,请参见第23.4.6节“事件调度程序和MySQL特权”.