Wątek 2 utrzymuje wspólną blokadę w wierszu w tabeli użytkowników.
Następnie wątek 1 próbuje uzyskać blokadę na wyłączność w tym samym wierszu i przechodzi w tryb oczekiwania na blokadę.
Ale wątek 1 nie będzie miał możliwości przekroczenia limitu czasu, ponieważ wątek 2 próbuje następnie eskalować swoją blokadę do wyłączności ... ale aby to zrobić, musi poczekać na wątek 1, który jest w oczekiwaniu na blokadę, ale czeka na wątek 2.
Każde z nich blokuje się nawzajem.
To impas.
Serwer wybiera transakcję do zabicia, aby niepotrzebnie się nie blokowały.
Wykrywanie zakleszczeń umożliwia natychmiastowy sukces jednego wątku kosztem drugiego. W przeciwnym razie oboje utknęliby w zamku, czekając, aż jeden z nich umrze z powodu zbyt długiego czekania.
Jesteś w trybie automatycznego zatwierdzania, ale oczywiście nie oznacza to, że nie uczestniczysz w transakcji. Każde zapytanie z InnoDB jest nadal obsługiwane w transakcji, ale z automatycznym zatwierdzaniem, transakcja jest niejawnie uruchamiana, gdy zapytanie zaczyna się wykonywać i niejawnie zatwierdzane, gdy się powiedzie.