Этот вопрос проверяет знание конкретных механизмов обработки взаимоблокировок в современных системах управления базами данных.
Короткий ответ
PostgreSQL автоматически обнаруживает взаимоблокировки с помощью графа ожидания блокировок. Когда обнаруживается цикл в этом графе (что указывает на deadlock), СУБД выбирает одну транзакцию в качестве "жертвы" и откатывает ее, освобождая заблокированные ресурсы. Выбранная транзакция получает ошибку, а остальные могут продолжить выполнение. Критерий выбора "жертвы" обычно основан на стоимости отката — отменяется транзакция с наименьшей стоимостью отката.
Длинный ответ
Зарегистрироваться
Развернутый ответ доступен только зарегистрированным пользователям.