Nabywaj blokady w spójnej globalnej kolejności, trzymaj transakcje krótkie, obniżaj izolację tam, gdzie to bezpieczne, i ponawiaj przegranego, gdy deadlock i tak wystąpi. Deadlock to cykl: transakcja A trzyma wiersz 1 i czeka na wiersz 2, podczas gdy B trzyma wiersz 2 i czeka na wiersz 1 — żadna nie może ruszyć, więc DB zabija jedną.
Cykl, który musisz przełamać
Tx A Tx B
holds row 1 ──── waits ────▶ row 2 (held by B)
▲ │
│ waits │ holds
└────────── row 1 ◀────────────┘
(cycle = deadlock; DB aborts one victim)
