Wykrywanie zakleszczeń (DB)
Mechanizm wykrywający, że dwie (lub więcej) transakcji czekają w kółko na swoje blokady i nigdy nie ruszą dalej. Baza rozwiązuje zakleszczenie, wybierając „ofiarę” i automatycznie wycofując jej transakcję.
Problem: transakcja A trzyma blokadę 1 i chce 2; transakcja B trzyma 2 i chce 1 → żadna nie może iść dalej (klasyczne zakleszczenie). Wykrywanie: baza buduje „graf oczekiwania” (kto na kogo czeka) i szuka cykli; gdy go znajdzie, wybiera ofiarę (często tę, która wykonała najmniej pracy, czyli jest najtańsza do wycofania) i przerywa jej transakcję z błędem zakleszczenia, by pozostałe mogły się toczyć. InnoDB i PostgreSQL robią to automatycznie i bez przerwy. Aplikacja musi być gotowa przechwycić błąd i ponowić próbę. Zapobieganie: zawsze blokuj zasoby w tej samej kolejności, trzymaj transakcje krótkie. Co innego niż timeout blokady (który po prostu poddaje się po czasie, nie rozumiejąc przyczyny). Powiązane z pesymistyczną kontrolą współbieżności i migawką MVCC.