Acquisisci i lock in un ordine globale coerente, mantieni le transazioni brevi, abbassa l'isolamento dove è sicuro, e ritenta il perdente quando un deadlock accade comunque. Un deadlock è un ciclo: la transazione A tiene la riga 1 e attende la riga 2, mentre B tiene la riga 2 e attende la riga 1 — nessuna può procedere, così il DB ne uccide una.
Il ciclo che devi spezzare
Tx A Tx B
holds row 1 ──── waits ────▶ row 2 (held by B)
▲ │
│ waits │ holds
└────────── row 1 ◀────────────┘
(cycle = deadlock; DB aborts one victim)
