Erwirb Locks in einer konsistenten globalen Reihenfolge, halte Transaktionen kurz, senke die Isolation dort, wo es sicher ist, und wiederhole den Verlierer, wenn dennoch ein Deadlock auftritt. Ein Deadlock ist ein Zyklus: Transaktion A hält Row 1 und wartet auf Row 2, während B Row 2 hält und auf Row 1 wartet - keine kann fortfahren, also killt die DB eine.
Der Zyklus, den du brechen musst
Tx A Tx B
holds row 1 ──── waits ────▶ row 2 (held by B)
▲ │
│ waits │ holds
└────────── row 1 ◀────────────┘
(cycle = deadlock; DB aborts one victim)
