locks एका सुसंगत global order मध्ये acquire करा, transactions लहान ठेवा, सुरक्षित असेल तिथे 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)
