Um deadlock ocorre quando duas (ou mais) transações cada uma mantém um lock que a outra precisa, então nenhuma pode prosseguir — elas ficam presas esperando uma pela outra eternamente. Bancos de dados detectam deadlocks e os resolvem abortando uma transação (a "vítima"), que deve tentar novamente. Entender as causas e prevenção é importante para aplicações concorrentes.
Como um deadlock acontece
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;
