DBAtlas · Атлас эксплуатации баз данных

1969: MariaDB: выполнение запроса прервано (превышен max_statement_time)

MySQL

Что это значит?

Специфично для MariaDB (ER_STATEMENT_TIMEOUT): запрос прерван, поскольку превысил максимальное время выполнения, заданное max_statement_time. В MySQL этого кода нет; эквивалент в MySQL — ошибка 3024 (ER_QUERY_TIMEOUT, max_execution_time).

Почему возникает?

В MariaDB — превышение лимита max_statement_time на уровне сессии/глобально или лимита, заданного через SET STATEMENT max_statement_time=N FOR ...; неэффективный план, отсутствующий индекс, сканирование большого объёма данных или ожидание блокировок.

Как исправить

Проанализируйте запрос с помощью EXPLAIN и ускорьте его, добавив индексы и улучшив план. Если запросу действительно нужно выполняться долго, повысьте лимит в MariaDB: SET SESSION max_statement_time = 60; (секунды) или SET STATEMENT max_statement_time = 60 FOR SELECT ...; Если используете MySQL, см. запись 3024 (max_execution_time, миллисекунды; подсказка MAX_EXECUTION_TIME). Разбивайте крупные операции.

Открыть в DBAtlas →

Ещё по этой СУБД