Deadlocks in MySQL
In diesem Artikel wird über Deadlocks in MySQL gesprochen, die helfen, sie zu identifizieren und zu beheben, wenn sie eine Site herunterfahren, den Import von Datenbanken blockieren oder andere Adobe Commerce-Probleme verursachen.
Betroffene Produkte und Versionen
- Adobe Commerce vor Ort 2.2.x und 2.3.x
- Adobe Commerce auf Cloud-Infrastruktur 2.2.x und 2.3.x
Problem
Deadlocks in MySQL treten auf, wenn sich zwei oder mehr Transaktionen gegenseitig halten und Sperren anfordern. Deadlocks weisen nicht immer auf ein Problem hin, sind aber oft Symptom eines anderen MySQL- oder Adobe Commerce-Problems, das aufgetreten ist.
Häufig wird in den Anwendungs-, Bereitstellungs- oder MySQL-Protokollen der Fehler "Deadlock" oder der Fehler "Deadlock gefunden, wenn versucht wird, eine Sperre zu erhalten; versuchen Sie, die Transaktion neu zu starten."
Ursache
Deadlocks können mehrere Ursachen haben. Am häufigsten ist es jedoch, wenn Sie eine Interaktion (Website/Prozesse/Cron-Aufträge/andere Benutzer/MySQL-Wartung/MySQL-Importe) ausführen, während Sie gleichzeitig DML-/DDL-Abfragen durchführen.
Es empfiehlt sich beispielsweise, einen blockierten MySQL-Datenbankimport zu vermeiden, indem Sie Ihre Site zunächst in den Wartungsmodus versetzen, um zu verhindern, dass SQL-Anforderungen in die Datenbank aufgenommen werden, die zu Deadlocks und einem blockierten Datenbankimport führen könnten.
Lösung
-
Überprüfen Sie Ihre Anwendungs-, Bereitstellungs- oder MySQL-Protokolle auf Deadlock-Fehler:
-
Überprüfen Sie Ihre MySQL-Prozessliste auf die Ausführung von Prozessen mit dem Befehl
mysql -e 'show full processlist';
-
Überprüfen Sie in Adobe Commerce in der Cloud-Infrastruktur, ob MySQL Slave aktiviert ist. Lesen Sie diesen Artikel: Bereitstellen von Variablen (MYSQL_USE_SLAVE_CONNECTION).
-
Abhängig von den involvierten Fehlern kann die Lösung selbst vorhanden sein, oder Sie müssen möglicherweise Ihre hilfreichen Protokollinformationen angeben, wenn Sie ein Support-Ticket öffnen müssen.