Deadlock (взаимная блокировка) возникает, когда две (или более) транзакции удерживают блокировку, которая нужна друг другу, поэтому ни одна не может продолжать — они застряли в бесконечном ожидании друг друга. Базы данных обнаруживают deadlock и разрешают его абортированием одной транзакции ("жертвой"), которая должна повторить попытку. Понимание причин и методов предотвращения важно для приложений с параллельными операциями.
Как происходит deadlock
Transaction A: locks row 1, then wants row 2
Transaction B: locks row 2, then wants row 1
→ A waits for B (to release row 2), B waits for A (to release row 1) → DEADLOCK
Neither can proceed; they're waiting on each other in a cycle.
