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

1205: Превышен тайм-аут ожидания блокировки; попробуйте перезапустить транзакцию

MySQL

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

Транзакция ждала необходимую блокировку строки в течение innodb_lock_wait_timeout секунд, не смогла её получить и завершилась по тайм-ауту.

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

Другая транзакция долго удерживает блокировку без commit или rollback; простаивающие открытые транзакции, длительные массовые обновления или горячие строки с высокой конкуренцией.

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

Найдите блокирующую транзакцию: соедините performance_schema.data_lock_waits с data_locks (в старых версиях information_schema.innodb_lock_waits/innodb_trx). Зафиксируйте/откатите блокирующую транзакцию или при необходимости завершите её через KILL <trx_mysql_thread_id>. Делайте транзакции короткими и не оставляйте их простаивать (autocommit/логика приложения). При необходимости настройте innodb_lock_wait_timeout под нагрузку.

Открыть в DBAtlas →

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