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

enq: TX - row lock contention: Ожидание: сессия заблокирована блокировкой уровня строки, удерживаемой другой транзакцией

Oracle

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

Сессия ждёт освобождения блокировки строки, удерживаемой другой транзакцией. Это классическое событие ожидания блокировки на уровне приложения.

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

Параллельные транзакции, пытающиеся обновить одну и ту же строку, транзакции, долго остающиеся без commit, широкие блокировки из-за неиндексированных внешних ключей или концентрация на последовательном ключе (горячий блок).

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

Найдите блокирующие и заблокированные сессии: SELECT * FROM v$session WHERE blocking_session IS NOT NULL; и сопоставьте с v$lock. Если первопричина — длительные транзакции, пересмотрите стратегию commit. Индексируйте столбцы внешних ключей. Для горячих строк пересмотрите дизайн (sequence, hash). При необходимости завершите блокирующую сессию.

Открыть в DBAtlas →

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