Pokud používáte InnoDB nebo jakýkoli transakční RDBMS na úrovni řádků, je možné, že jakýkoli transakce zápisu může způsobit uváznutí, a to i v naprosto normálních situacích. Větší tabulky, větší zápisy a dlouhé transakční bloky často zvyšují pravděpodobnost zablokování. Ve vaší situaci je to pravděpodobně kombinace těchto.
Jediný způsob, jak skutečně zvládnout zablokování, je napsat kód tak, aby je očekával. To obecně není příliš obtížné, pokud je kód vaší databáze dobře napsán. Často stačí zadat try/catch
kolem logiky provádění dotazu a hledejte uváznutí, když dojde k chybě. Pokud jeden chytíte, normální věcí je pokusit se znovu provést neúspěšný dotaz.
Vřele doporučuji, abyste si přečetli tuto stránku v příručce MySQL. Obsahuje seznam věcí, které je třeba udělat, abyste se vyrovnali s patovými situacemi a snížili jejich frekvenci.