Zastój (deadlock) występuje, gdy dwie (lub więcej) transakcje każda posiada blokadę, której potrzebuje druga, więc żadna nie może się posunąć — są zablokowane czekając na siebie nawzajem w nieskończoność. Bazy danych wykrywają zastoje i rozwiązują je przez przerwanie jednej transakcji ("ofiary"), którą trzeba ponowić. Zrozumienie przyczyn i zapobiegania jest ważne dla aplikacji współbieżnych.
Jak dochodzi do zastoju
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.
; ;
accounts .. id; accounts .. id;
accounts .. id; accounts .. id;
