Αποκτήστε locks με μια συνεπή global σειρά, κρατήστε τα transactions σύντομα, χαμηλώστε το isolation όπου είναι ασφαλές, και κάντε retry τον χαμένο όταν ένα deadlock παρόλα αυτά συμβεί. Ένα deadlock είναι ένας κύκλος: το transaction A κρατά τη row 1 και περιμένει τη row 2, ενώ το B κρατά τη row 2 και περιμένει τη row 1 — κανένα δεν μπορεί να προχωρήσει, οπότε η βάση σκοτώνει το ένα.
Ο κύκλος που πρέπει να σπάσετε
Tx A Tx B
holds row 1 ──── waits ────▶ row 2 (held by B)
▲ │
│ waits │ holds
└────────── row 1 ◀────────────┘
(cycle = deadlock; DB aborts one victim)
