locks को एक consistent global order में acquire करें, transactions छोटे रखें, जहां safe हो वहां isolation कम करें, और जब deadlock फिर भी हो तो हारने वाले को retry करें। एक deadlock एक cycle है: transaction A row 1 रखता है और row 2 के लिए इंतज़ार करता है, जबकि B row 2 रखता है और row 1 के लिए इंतज़ार करता है — कोई आगे नहीं बढ़ सकता, इसलिए DB एक को मार देता है।
वह cycle जिसे आपको तोड़ना है
Tx A Tx B
holds row 1 ──── waits ────▶ row 2 (held by B)
▲ │
│ waits │ holds
└────────── row 1 ◀────────────┘
(cycle = deadlock; DB aborts one victim)
