Я думаю, что этот старый вопрос нуждается в обновленном ответе.
Вы можете установить GLOBAL
тайм-аут для всех ваших запросов только для чтения SELECT
, например:
SET GLOBAL MAX_EXECUTION_TIME=1000;
Время указано в миллисекундах.
Если вы хотите тайм-аут только для определенного запроса, вы можете установить его в строке следующим образом:
SELECT /*+ MAX_EXECUTION_TIME(1000) */ my_column FROM my_table WHERE ...
MySQL возвращает ошибку вместо ожидания вечности.
Обратите внимание, что этот метод работает только для чтения SELECT
s. Если определено, что оператор SELECT
не предназначен только для чтения, то любой таймер, установленный для него, отменяется, и пользователю сообщается следующее сообщение ПРИМЕЧАНИЕ:
Note 1908 Select is not a read only statement, disabling timer
Для операторов с подзапросами ограничивает только верхнюю SELECT
. Это не относится к SELECT
операторам в хранимых программах. Использование подсказки MAX_EXECUTION_TIME
в операторах SELECT
в хранимой программе будет игнорироваться.