Spec-Zone.ru › MariaDB

Обзор событий

События — это именованные объекты базы данных, содержащие SQL-запросы, которые должны быть выполнены впоследствии, либо один раз, либо через определённые интервалы.

Они функционируют очень похоже на планировщик задач Windows или задачи cron в Unix.

Для создания, изменения или удаления событий требуется привилегия EVENT.

Создание событий

События создаются с помощью оператора CREATE EVENT.

Пример

CREATE EVENT test_event 
  ON SCHEDULE EVERY 1 MINUTE DO 
   UPDATE test.t1 SET a = a + 1;

Выполнение событий

События выполняются только в том случае, если планировщик событий запущен. Это определяется значением системной переменной event_scheduler, которая должна быть установлена в значение On для запуска планировщика событий.

Вы можете проверить, запущен ли планировщик событий с помощью:

SHOW PROCESSLIST;
+----+-----------------+-----------+------+---------+------+-----------------------------+------------------+----------+
| Id | User            | Host      | db   | Command | Time | State                       | Info             | Progress |
+----+-----------------+-----------+------+---------+------+-----------------------------+------------------+----------+
| 40 | root            | localhost | test | Sleep   | 4687 |                             | NULL             |    0.000 |
| 41 | root            | localhost | test | Query   |    0 | init                        | SHOW PROCESSLIST |    0.000 |
| 42 | event_scheduler | localhost | NULL | Daemon  |   30 | Waiting for next activation | NULL             |    0.000 |
+----+-----------------+-----------+------+---------+------+-----------------------------+------------------+----------+

Если планировщик событий не запущен и event_scheduler установлено в значение OFF, используйте:

SET GLOBAL event_scheduler = ON;

чтобы его активировать. Если event_scheduler установлено в значение Disabled, вы не можете изменить его значение во время выполнения. Для изменения значения переменной event_scheduler требуется привилегия SUPER.

Начиная с MariaDB 10.0.22, установка системной переменной event_scheduler также попытается перезагрузить таблицу mysql.event, если она не была правильно загружена при запуске.

Просмотр текущих событий

Список текущих событий можно получить с помощью оператора SHOW EVENTS. Это отображает только имя события и интервал — полные подробности события, включая SQL, можно увидеть, выполнив запрос к таблице Information Schema EVENTS или с помощью SHOW CREATE EVENT.

Если событие выполняется в настоящее время, его можно увидеть, выполнив запрос к таблице Information Schema PROCESSLIST или с помощью оператора SHOW PROCESSLIST.

Пример

SHOW EVENTS\G;
*************************** 1. row ***************************
                  Db: test
                Name: test_event
             Definer: root@localhost
           Time zone: SYSTEM
                Type: RECURRING
          Execute at: NULL
      Interval value: 1
      Interval field: MINUTE
              Starts: 2013-05-20 13:46:56
                Ends: NULL
              Status: ENABLED
          Originator: 1
character_set_client: utf8
collation_connection: utf8_general_ci
  Database Collation: latin1_swedish_ci
SHOW CREATE EVENT test_event\G
*************************** 1. row ***************************
               Event: test_event
            sql_mode: 
           time_zone: SYSTEM
        Create Event: CREATE DEFINER=`root`@`localhost` EVENT `test_event` ON SCHEDULE EVERY 1 MINUTE STARTS '2013-05-20 13:46:56' ON COMPLETION NOT PRESERVE ENABLE DO UPDATE test.t1 SET a = a + 1
character_set_client: utf8
collation_connection: utf8_general_ci
  Database Collation: latin1_swedish_ci

Изменение событий

Событие можно изменить с помощью оператора ALTER EVENT.

Пример

ALTER EVENT test_event ON SCHEDULE EVERY '2:3' DAY_HOUR;

Удаление событий

События удаляются с помощью оператора DROP EVENT. События также автоматически удаляются после их завершения в соответствии с расписанием, если не был указан оператор ON COMPLETION PRESERVE.

Пример

DROP EVENT test_event;
Query OK, 0 rows affected (0.00 sec)

См. также

  • CREATE EVENT
  • SHOW CREATE EVENT
  • ALTER EVENT
  • DROP EVENT
  • Ограничения событий
  • Автоматизация задач MariaDB с помощью событий
Содержимое, воспроизведенное на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проверяется предварительно компанией MariaDB. Мнения, информация и мнения, выраженные в этом содержании, не обязательно отражают точку зрения MariaDB или любой другой стороны.

© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/events/

Spec-Zone.ru

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