IT-словарь › Базы данных › Обнаружение дедлока (БД)

Обнаружение дедлока (БД)

Базы данных Svenska → Обновлено: 2026-10-18

Механизм, который замечает, что две (или больше) транзакции ждут блокировки друг друга по кругу и никогда не продолжатся. СУБД разрывает дедлок, выбирая «жертву» и автоматически откатывая её.

Проблема: транзакция A держит блокировку 1 и хочет блокировку 2, а транзакция B держит 2 и хочет 1 — ни одна не может двигаться дальше (классический дедлок). Обнаружение: СУБД строит «граф ожидания» (кто кого ждёт) и ищет в нём циклы; найдя цикл, выбирает жертву (обычно ту, что сделала меньше всего работы и дешевле всего откатывается) и прерывает её транзакцию с ошибкой дедлока, чтобы остальные могли продолжить. InnoDB и PostgreSQL делают это автоматически и постоянно. Приложение должно уметь перехватить ошибку и повторить транзакцию. Профилактика: всегда блокировать ресурсы в одном и том же порядке и делать транзакции короткими. Не путать с таймаутом блокировки, который просто сдаётся через некоторое время, не разбираясь в причине.

← Назад к словарю