Главная » Статьи » Базы данных » MySQL |
В этой статье я расскажу вам о планировщике событий MySQL и о том, как создать события MySQL для автоматизации задач базы данных. Событие MySQL это задача, которая работает на основе заранее утвержденного расписания, поэтому иногда его еще называют запланированным событием. Событие MySQL также известно под названием «временной триггер», потому что оно вызывается в зависимости от времени, а не в зависимости от обновления таблицы, как триггер. События MySQL похожи на хроны в UNIX или на планировщик задач в Windows. Вы можете использовать события MySQL во многих случаях. Например, таких как оптимизация таблиц базы данных, очистка журналов, архивация данных или составление комплексных отчетов во время непиковой нагрузки. Конфигурация планировщика событий MySQLДля выполнения всех запланированных событий MySQL использует специальный поток, который называется «поток планировщика событий». Вы можете увидеть статус потока планировщика событий, выполнив следующую команду:
![]() По умолчанию поток планировщика событий отключен. Чтобы включить его и запустить поток планировщика событий, необходимо выполнить следующую команду:
Теперь, чтобы увидеть статус потока планировщика событий, снова выполните команду SHOW PROCESSLIST: Чтобы отключить и остановить поток планировщика событий, выполняется команда SET GLOBAL со значением для event_scheduler OFF:
Создание новых событий MySQLСоздание события производится аналогично созданию других объектов базы данных: таких как хранимые процедуры и триггеры. Событие представляет собой проименованный объект, который содержит состояние SQL. Хранимая процедура выполняется только при прямом вызове; триггер выполняется, когда происходит событие, связанное с таблицей: например добавление, обновление, или удаление. В то время как само событие может выполняться один или несколько раз с регулярным интервалом. Чтобы создать и запланировать новое событие, нужно использовать оператор CREATE EVENTследующим образом:
Давайте рассмотрим этот оператор более подробно:
Давайте рассмотрим несколько примеров создания события, которые позволят лучше понять приведенный выше синтаксис. Чтобы создать и запланировать новое одноразовое событие, которое добавляет сообщение в таблицу сообщений, нужно сделать следующее: Во-первых, нужно с помощью оператора CREATE TABLE создать новую таблицу с именем messages:
Во-вторых, создаем событие с помощью оператора CREATE EVENT:
В-третьих, проверяем таблицу messages. Вы увидите, что у нас есть одна запись. Это значит, что событие было выполнено во время его создания:
![]() Для вывода всех событий базы данных, можно использовать следующий оператор:
Мы видим, что нам не возвращается ни одна запись, потому что событие автоматически удаляется, когда истек его срок. В нашем случае это одноразовое событие, и его срок истек, когда его исполнение было завершено. Чтобы изменить этот сценарий, вы можете использовать условие ON COMPLETION PRESERVE. Следующий оператор создает еще одно одиночное событие, которое выполняется спустя 1 минуту после его создания и не удаляется после выполнения:
Спустя 1 минуту проверяем таблицу сообщений, и видим, что в нее была добавлена еще одна запись:
![]() Если мы снова запустим на исполнение оператор SHOW EVENTS, то увидим, что события все еще хранятся в структуре базы данных, потому что мы использовали условие ON COMPLETION PRESERVE:
Следующий оператор создает повторяющееся событие, которое выполняется каждую минуту, и срок которого истекает спустя 1 час после времени его создания:
Обратите внимание, что мы использовали операторы STARTS и ENDS, чтобы задать для события срок действия. Вы можете протестировать это повторяющееся событие, подождав несколько минут, а затем вновь проверив таблицу сообщений:
![]() Отмена событий MySQLЧтобы отменить существующее событие, нужно использовать оператор DROP EVENT следующим образом:
Например, чтобы отменить событие test_event_03, нужно использовать следующий оператор:
Из этой статьи вы узнали о событиях MySQL, как создавать и удалять события из базы данных. В следующей статье мы покажем вам, как изменить существующее событие. | |
Просмотров: 534 | | |
Всего комментариев: 0 | |