Что такое deadlock в SQL

Python Middle Без компании
Что такое deadlock в SQL
Ответы
Deadlock возникает, когда две или более транзакции блокируют ресурсы, которые нужны друг другу, и ни одна не может продолжить выполнение. **Пример:** Транзакция 1 блокирует строку A и пытается получить доступ к строке B, а транзакция 2 блокирует строку B и пытается получить доступ к строке A. ``` -- Транзакция 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 и отменяет одну из транзакций.