Встречается на собеседованиях • сегодня
Как бороться с deadlock-ами в базе данных
Deadlock возникает, когда две или более транзакции блокируют ресурсы и ждут друг друга. Основные способы борьбы:
- Порядок блокировок – всегда блокируйте ресурсы в одинаковом порядке. Например:
java
// Правильно:
transaction1.lock(A).lock(B);
transaction2.lock(A).lock(B); // Не deadlock- Таймауты – устанавливайте максимальное время ожидания блокировки:
sql
SET LOCK_TIMEOUT 5000; -- 5 секунд (SQL Server)-
Изоляция транзакций – используйте
READ COMMITTEDвместоSERIALIZABLE, если возможно. -
Мелкие транзакции – разбивайте большие транзакции на меньшие.
-
Обнаружение и откат – СУБД обычно автоматически обнаруживают deadlock и отменяют одну из транзакций. Можно ловить
SQLExceptionи повторять операцию. -
Оптимистичные блокировки – используйте версионирование вместо пессимистичных блокировок.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы