Spec-Zone .ru
спецификации, руководства, описания, API
|
Events are executed by a special event scheduler thread; when we refer to the Event
Scheduler, we actually refer to this thread. When running, the event scheduler thread and its current state can
be seen by users having the PROCESS
privilege in the output of SHOW PROCESSLIST
, as shown in the discussion that follows.
The global event_scheduler
system variable determines whether the Event Scheduler is enabled
and running on the server. It has one of these 3 values, which affect event scheduling as described here:
OFF
: The Event Scheduler is stopped. The event
scheduler thread does not run, is not shown in the output of SHOW PROCESSLIST
, and no scheduled events are executed. OFF
is the default value for event_scheduler
.
When the Event Scheduler is stopped (event_scheduler
is OFF
), it can be
started by setting the value of event_scheduler
to ON
. (See next
item.)
ON
: The Event Scheduler is started; the event scheduler
thread runs and executes all scheduled events.
When the Event Scheduler is ON
, the event scheduler thread is listed in
the output of SHOW
PROCESSLIST
as a daemon process, and its state is represented as shown here:
mysql> SHOW PROCESSLIST\G
*************************** 1. row *************************** Id: 1 User: root Host: localhost db: NULLCommand: Query Time: 0 State: NULL Info: show processlist*************************** 2. row *************************** Id: 2 User: event_scheduler Host: localhost db: NULLCommand: Daemon Time: 3 State: Waiting for next activation Info: NULL2 rows in set (0.00 sec)
Event scheduling can be stopped by setting the value of event_scheduler
to OFF
.
DISABLED
: This value renders the Event Scheduler
nonoperational. When the Event Scheduler is DISABLED
, the event scheduler
thread does not run (and so does not appear in the output of SHOW PROCESSLIST
). In addition, the Event Scheduler state cannot be
changed at runtime.
If the Event Scheduler status has not been set to DISABLED
, event_scheduler
can be toggled between ON
and OFF
(using SET
). It is
also possible to use 0
for OFF
, and 1
for ON
when setting this variable. Thus, any of
the following 4 statements can be used in the mysql client to turn on the Event Scheduler:
SET GLOBAL event_scheduler = ON;SET @@global.event_scheduler = ON;SET GLOBAL event_scheduler = 1;SET @@global.event_scheduler = 1;
Similarly, any of these 4 statements can be used to turn off the Event Scheduler:
SET GLOBAL event_scheduler = OFF;SET @@global.event_scheduler = OFF;SET GLOBAL event_scheduler = 0;SET @@global.event_scheduler = 0;
Although ON
and OFF
have numeric equivalents, the
value displayed for event_scheduler
by SELECT
or SHOW VARIABLES
is always one of OFF
, ON
, or DISABLED
. DISABLED
has no numeric equivalent. For this reason, ON
and OFF
are usually preferred over 1
and 0
when setting this variable.
Note that attempting to set event_scheduler
without specifying it as a global variable causes an error:
mysql< SET @@event_scheduler =
OFF;
ERROR 1229 (HY000): Variable 'event_scheduler' is a GLOBALvariable and should be set with SET GLOBAL
It is possible to set the Event Scheduler to DISABLED
only at server
startup. If event_scheduler
is ON
or OFF
, you cannot set it to DISABLED
at runtime. Also, if the Event Scheduler is set to DISABLED
at startup, you cannot change the value of event_scheduler
at runtime.
To disable the event scheduler, use one of the following two methods:
As a command-line option when starting the server:
--event-scheduler=DISABLED
In the server configuration file (my.cnf
, or my.ini
on Windows systems), include the line where it will be read by the
server (for example, in a [mysqld]
section):
event_scheduler=DISABLED
To enable the Event Scheduler, restart the server without the --event-scheduler=DISABLED
command-line option, or after removing or commenting
out the line containing event-scheduler=DISABLED
in the server configuration file, as appropriate.
Alternatively, you can use ON
(or 1
) or OFF
(or 0
) in place of the DISABLED
value when starting the server.
You can issue event-manipulation statements when event_scheduler
is set to DISABLED
. No warnings
or errors are generated in such cases (provided that the statements are themselves valid). However,
scheduled events cannot execute until this variable is set to ON
(or 1
). Once this has been done, the event scheduler thread executes all events
whose scheduling conditions are satisfied.
Starting the MySQL server with the --skip-grant-tables
option causes event_scheduler
to be set to DISABLED
, overriding
any other value set either on the command line or in the my.cnf
or my.ini
file (Bug #26807).
For SQL statements used to create, alter, and drop events, see Section 19.4.3, "Event Syntax".
MySQL 5.6 provides an EVENTS
table in the INFORMATION_SCHEMA
database.
This table can be queried to obtain information about scheduled events which have been defined on the server.
See Section
19.4.4, "Event Metadata", and Section 20.7, "The
INFORMATION_SCHEMA EVENTS
Table", for more information.
For information regarding event scheduling and the MySQL privilege system, see Section 19.4.6, "The Event Scheduler and MySQL Privileges".