Встречается на собеседованиях • сегодня

Что такое deadlock в SQL

Deadlock возникает, когда две или более транзакции блокируют ресурсы, которые нужны друг другу, и ни одна не может продолжить выполнение.

Пример:
Транзакция 1 блокирует строку A и пытается получить доступ к строке B, а транзакция 2 блокирует строку B и пытается получить доступ к строке A.

sql
-- Транзакция 1
BEGIN;
UPDATE table1 SET col1 = 1 WHERE id = 1; -- Блокировка строки A
UPDATE table1 SET col1 = 2 WHERE id = 2; -- Ожидание строки B

-- Транзакция 2 (параллельно)
BEGIN;
UPDATE table1 SET col1 = 3 WHERE id = 2; -- Блокировка строки B
UPDATE table1 SET col1 = 4 WHERE id = 1; -- Ожидание строки A

Решение:

  • Использование NOWAIT или таймаутов (SET LOCK_TIMEOUT).
  • Оптимизация порядка блокировок.
  • СУБД автоматически обнаруживает deadlock и отменяет одну из транзакций.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы