Spec-Zone.ru › MySQL 9.2

27.5.2 Настройка планировщика событий

События выполняются специальной нитью планировщика событий; когда мы говорим о Планировщике событий, мы фактически имеем в виду эту нить. Во время работы нить планировщика событий и её текущее состояние могут быть видны пользователям, имеющим привилегию PROCESS, в выводе SHOW PROCESSLIST, как показано в последующем обсуждении.

Глобальная системная переменная event_scheduler определяет, включен ли Планировщик событий и работает ли он на сервере. Она имеет одно из следующих значений, которые влияют на планирование событий, как описано:

  • 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: Это значение делает Планировщик событий неработоспособным. Когда Планировщик событий DISABLED, нить планировщика событий не выполняется (и, следовательно, не отображается в выводе SHOW PROCESSLIST). Кроме того, состояние Планировщика событий нельзя изменить во время работы.

Если статус Планировщика событий не был установлен в DISABLED, event_scheduler можно переключать между ON и OFF (используя SET). Также можно использовать 0 для OFF и 1 для ON при установке этой переменной. Таким образом, любое из следующих 4 утверждений можно использовать в клиенте mysql для включения Планировщика событий:

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;
Примечание

Если Планировщик событий включен, включение системной переменной super_read_only предотвращает обновление временных меток события “последнее выполнение” в таблице словаря данных events. Это заставляет Планировщик событий остановить следующее запланированное событие при попытке его выполнения после записи сообщения в журнал ошибок сервера. (В этой ситуации системная переменная event_scheduler не меняется с ON на OFF. Следствием является то, что эта переменная отклоняет намерение DBA включить или отключить Планировщик событий, где его фактический статус, запущен или остановлен, может отличаться.). Если super_read_only затем отключен после включения, сервер автоматически перезапускает Планировщик событий по мере необходимости.

Хотя 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). После этого нить планировщика событий выполняет все события, условия планирования которых соблюдены.

Запуск сервера MySQL с опцией --skip-grant-tables приводит к установке event_scheduler в значение DISABLED, перезаписывая любое другое значение, установленное в командной строке или в файлах my.cnf или my.ini (Ошибка #26807).

Для SQL-операторов создания, изменения и удаления событий см. Раздел 27.5.3, «Синтаксис событий».

MySQL предоставляет таблицу EVENTS в базе данных INFORMATION_SCHEMA. Эту таблицу можно запросить, чтобы получить информацию о запланированных событиях, определенных на сервере. См. Раздел 27.5.4, «Метаданные событий» и Раздел 28.3.14, «Таблица INFORMATION_SCHEMA EVENTS» для получения дополнительной информации.

Дополнительную информацию о планировании событий и системе привилегий MySQL см. в Разделе 27.5.6, «Планировщик событий и привилегии MySQL».

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-9.2-en/events-configuration.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API