Deadlocks in MySQL
Den här artikeln handlar om dödlägen i MySQL för att hjälpa till att identifiera och lösa dem om de orsakar problem med en webbplats, fast databasimport eller andra Adobe Commerce-problem.
Berörda produkter och versioner
- Adobe Commerce lokal 2.2.x och 2.3.x
- Adobe Commerce i molninfrastruktur 2.2.x och 2.3.x
Problem
Deadlocks i MySQL inträffar när två eller flera transaktioner håller ihop och begär lås. Deadlocks som finns tyder inte alltid på ett problem, utan är ofta ett symtom på något annat MySQL- eller Adobe Commerce-problem som har inträffat.
I programmet, distributionen eller MySQL-loggarna anges ofta ett "deadlock" -fel eller felet "Deadlock hittades vid försök att låsa. Försök starta om transaktionen."
Orsak
Deadlocks kan ha flera orsaker, men det vanligaste är om du utför någon interaktion (webbplats/processer/cron-jobb/andra användare/MySQL-underhåll/MySQL-importer) samtidigt som du utför DML-/DDL-frågor.
Det är till exempel en bra rutin att undvika en fastsatt import av MySQL-databas genom att först försätta platsen i underhållsläge för att undvika att SQL-begäranden skickas till databasen som kan orsaka lås och en fast databasimport.
Lösning
-
Kontrollera programmet, distributionen eller MySQL-loggarna för att se om det finns några dödlåsningsfel:
-
Kontrollera din MySQL-processlista för att se om processer körs med kommandot
mysql -e 'show full processlist';
-
Om du använder Adobe Commerce i molninfrastruktur kontrollerar du att MySQL-slav är aktiverat. Läs den här artikeln: Distribuera variabler (MYSQL_USE_SLAVE_CONNECTION).
-
Beroende på vilka fel som har uppstått kan det bero på att lösningen finns på sig själv eller på att du måste inkludera din användbara logginformation om du behöver öppna en supportanmälan.