事件由特殊执行事件调度线程;当我们引用事件计划程序时,我们实际上是指此线程。运行时,可以通过具有的用户看到事件调度程序线程及其当前状态过程
的输出中的特权显示PROCESSLIST
,如下面的讨论所示。
全球event_scheduler
system变量决定事件调度程序是否启用并在服务器上运行。它有以下值之一,这些值会影响事件调度,如下所述:
上
:事件调度程序已启动;事件调度程序线程运行并执行所有预定的事件。上
是默认的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
是离开
),可以通过设置值来启动event_scheduler
来上
.(见下一个项目。)禁用
:该值使事件调度程序不可操作。事件调度程序禁用
,事件调度程序线程不会运行(因此不会出现在输出中显示PROCESSLIST
).此外,事件调度程序状态不能在运行时更改。
如果事件调度程序状态尚未设置为禁用
,event_scheduler
可以在介于之间切换上
和离开
(使用集
).它也可以使用0
为离开
, 和1
为上
设置此变量时。控件中可以使用以下4个语句中的任意一个mysql客户端打开事件调度程序:
设置全局event_scheduler = ON;设置@@GLOBAL。event_scheduler =;设置全局event_scheduler = 1;设置@@GLOBAL。event_scheduler = 1;
同样,这中的任何一个语句都可用于关闭事件调度程序:
设置全局event_scheduler = OFF;设置@@GLOBAL。event_scheduler =;设置全局event_scheduler = 0;设置@@GLOBAL。event_scheduler = 0;
如果事件调度程序已启用,则启用super_read_only.
系统变量可防止其更新事件”最后执行”时间戳的事件
数据词典表。这会导致事件调度程序停止下次尝试执行计划事件,在向服务器错误日志写入消息后。(在这种情况下event_scheduler
系统变量不会发生变化上
来离开
.含义是该变量将DBA重复意图将启用或禁用事件调度程序,其中启动或停止的实际状态可能是不同的。)。如果super_read_only.
随后禁用启用后,服务器会根据MySQL 8.0.26根据需要重新启动事件调度程序。在MySQL 8.0.26之前,必须通过再次启用事件调度程序手动重新启动事件调度程序。
虽然上
和离开
具有数字等价物,显示值event_scheduler
通过选择
或者显示变量
总是一个离开
,上
,或禁用
.禁用
没有相等的数字.为此原因,上
和离开
通常比1
和0
设置此变量时。
请注意,试图设置event_scheduler
如果不将其指定为全局变量,则会导致错误:
mysql
可以将事件调度程序设置为禁用
仅在服务器启动时。如果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语句,请参见第25.4.3节,“事件语法”.
MySQL提供了一个活动
表在Information_Schema.
数据库。通过查询该表可以获取服务器上已定义的定时事件信息。看到第25.4.4节,“事件元数据”, 和第26.3.14节," The INFORMATION_SCHEMA EVENTS Table ",以获取更多信息。
有关事件调度和MySQL特权系统的信息,请参见第25.4.6节“活动计划程序和MySQL权限”.