Этот вопрос проверяет понимание того, почему возникают дедлоки в реляционных БД и как проектировать запросы так, чтобы их избегать.
Короткий ответ
Deadlock появляется, когда два запроса блокируют ресурсы друг друга в пересекающемся порядке: один заблокировал строку A и ждёт строку B, а другой — наоборот. Причины: несогласованный порядок обновлений, долгие транзакции, отсутствие индексов, смешивание SELECT FOR UPDATE и UPDATE на разных путях. Чтобы избегать deadlock: соблюдать единый порядок обновления сущностей, делать транзакции короткими, использовать правильные индексы, избегать сканирования больших таблиц под блокировками и по возможности минимизировать конкурирующие UPDATE по одним и тем же строкам.
Длинный ответ
Зарегистрироваться
Развернутый ответ доступен только зарегистрированным пользователям.