Планировщик событий в MySQL

Начиная с версии 5.1 в MySQL появился планировщик событий, позволяющий выполнять различные действия в определенное время. Из этого следует то, что часть функционала можно перенести из Cron на сам MySQL.

По умолчанию, планировщик отключен. Включим его в конфиге.

event_scheduler = On

Или при помощи запроса.

SET GLOBAL event_scheduler = On;

Проверить текущее значение переменной можно следующим запросом.

SHOW VARIABLES LIKE "event_scheduler";

Команда не сложная. Указываем название события, точное время выполнения или интервал и сам исполняемый SQL. Создадим простое событие удаления всех неактивных пользователей каждый день.

CREATE EVENT `delete_inactive`
ON SCHEDULE EVERY 1 DAY
DO
DELETE FROM `user` WHERE `active` = 0;

Чтобы посмотреть информацию о событии, нужно выполнить следующий запрос.

SHOW EVENTS LIKE 'delete_inactive';

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

ALTER EVENT `delete_inactive`
ON SCHEDULE EVERY 1 HOUR;

Официальное описание команды CREATE EVENT

Комментарии

2
Панцерный Александр, 2 года назад
0

Не лучший пример задания. Предположим что active = 0 если пользователь еще не активировал аккаунт, например, через email. Тогда если пользователь зарегистрировался в 11.59, а в 12.00 сработало задание то он потеряет аккаунт. Для лучшего понимания необходимо привести пример запроса, где удаляются пользователи, не активировшие аккаунт в течении суток, для примера.

Панцерный Александр, 2 года назад
0

И еще, почему по ссылке Вы вошли на сайт как >>Панцерный Александр<< я вижу чужой профиль?