Порой возникает необходимость в том что-бы прибить долго выполняющиеся запросы к СУБД, что-бы не делать этого в 3 часа ночи, лучше бы это дело автоматизировать.
Для этого в MySQL есть неплохая штука под названием Events, воспользуемся ею. Создадим табличку в которую будем складывать слишком долго выполняющиеся запросы:
Создадим процедуру которая будет убивать запросы выполняющиеся от пользователей без права SUPER и работающие большее задаваемого интервала времени:
Создадим событие для планировщика MySQL:
Теперь все запросы, которые работают более 99 секунд будут складываться в табличку `dbstats`.`bad_query_list` и прибиваться.
Стоит добавить, что для безопасного отката транзакции лучше бы настроить переменные InnoDB:
innodb_rollback_on_timeout = 1
innodb_lock_wait_timeout = 50
P.S. Спокойных вам ночей коллеги.
Комментариев нет:
Отправить комментарий