Giành lock theo một thứ tự toàn cục nhất quán, giữ transaction ngắn, hạ isolation ở nơi an toàn, và retry bên thua khi deadlock vẫn xảy ra. Deadlock là một chu trình: transaction A giữ row 1 và chờ row 2, còn B giữ row 2 và chờ row 1 — không bên nào tiến được, nên DB giết một bên.
Chu trình bạn phải phá vỡ
Tx A Tx B
holds row 1 ──── waits ────▶ row 2 (held by B)
▲ │
│ waits │ holds
└────────── row 1 ◀────────────┘
(cycle = deadlock; DB aborts one victim)
