En deadlock opstår, når to (eller flere) transaktioner hver i sær holder en lås, som den anden har brug for, så ingen af dem kan fortsætte — de er fastlåst og venter på hinanden for evigt. Databaser opdager deadlocks og løser dem ved at afbryde en transaktion (ofret), som derefter skal køres igen. At forstå årsagerne og forebyggelsen er vigtig for samtidige applikationer.
Hvordan en deadlock opstår
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;
