Vlákno 2 obsahuje sdílený zámek na řádku v tabulce uživatelů.
Potom se vlákno 1 pokusí získat exkluzivní zámek na stejném řádku a přejde do čekání na zámek.
Ale vlákno 1 nebude mít příležitost vypršet, protože vlákno 2 se poté pokusí eskalovat svůj zámek na exkluzivní... ale aby to udělal, musí počkat na vlákno 1, které je v zámku čeká, ale čeká na vlákno 2.
Každý blokuje druhého.
To je zablokování.
Server vybere transakci, kterou má zabít, aby se vzájemně zbytečně neblokovali.
Detekce zablokování umožňuje jednomu vláknu okamžitě uspět na úkor druhého. Jinak by oba uvízli v zámku a počkali, dokud jeden z nich nezemře z příliš dlouhého čekání.
Jste v režimu automatického potvrzení, ale to samozřejmě neznamená, že nejste v transakci. Každý dotaz s InnoDB je stále zpracováván v transakci, ale s automatickým potvrzením je transakce implicitně spuštěna, když se dotaz začne provádět, a implicitně potvrzena, když uspěje.