Дедлок возникает, когда участники циклически ждут ресурсы, удерживаемые друг другом. Помогают единый порядок захвата блокировок, короткие транзакции и безопасные повторы.
Что такое дедлок и как с ним бороться?
Дедлок возникает, когда участники циклически ждут ресурсы, удерживаемые друг другом. Помогают единый порядок захвата блокировок, короткие транзакции и безопасные повторы.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Дедлок возникает, когда участники циклически ждут ресурсы, удерживаемые друг другом. Помогают единый порядок захвата блокировок, короткие транзакции и безопасные повторы.
Например, первая транзакция заблокировала A и ждёт B, вторая — B и ждёт A. СУБД обычно обнаруживает такую ситуацию и отменяет одну транзакцию; приложение должно уметь повторить всю операцию, а не отдельный случайный запрос. Диагностируют граф ожиданий и затронутые запросы. Не держите блокировки во время внешнего сетевого вызова. Увеличение таймаута не устраняет цикл ожидания и может только продлить проблему.