Wenn Sie InnoDB oder ein transaktionales RDBMS auf Zeilenebene verwenden, ist es möglich, dass jede Write-Transaktionen können sogar in ganz normalen Situationen zu einem Deadlock führen. Größere Tabellen, größere Schreibvorgänge und lange Transaktionsblöcke erhöhen oft die Wahrscheinlichkeit, dass Deadlocks auftreten. In Ihrer Situation ist es wahrscheinlich eine Kombination davon.
Die einzige Möglichkeit, Deadlocks wirklich zu handhaben, besteht darin, Ihren Code so zu schreiben, dass er sie erwartet. Dies ist im Allgemeinen nicht sehr schwierig, wenn Ihr Datenbankcode gut geschrieben ist. Oft können Sie einfach ein try/catch
setzen um die Abfrageausführungslogik herum und suchen Sie nach einem Deadlock, wenn Fehler auftreten. Wenn Sie eine abfangen, versuchen Sie normalerweise einfach, die fehlgeschlagene Abfrage erneut auszuführen.
Ich empfehle Ihnen dringend, diese Seite zu lesen im MySQL-Handbuch. Es hat eine Liste von Dingen, die zu tun sind, um Deadlocks zu bewältigen und ihre Häufigkeit zu reduzieren.