Deadlock in MySQL
Questo articolo parla dei deadlock in MySQL per aiutarli a identificare e risolvere eventuali problemi di blocco di un sito, blocco dell’importazione del database o altri problemi di Adobe Commerce.
Prodotti e versioni interessati
- Adobe Commerce on-premise 2.2.x e 2.3.x
- Adobe Commerce su infrastruttura cloud 2.2.x e 2.3.x
Problema
I deadlock in MySQL si verificano quando due o più transazioni si bloccano reciprocamente e richiedono blocchi. I deadlock presenti non sempre indicano un problema, ma spesso sono un sintomo di altri problemi MySQL o Adobe Commerce che si sono verificati.
I registri applicazioni, distribuzione o MySQL spesso menzionano un errore "deadlock" o l'errore "Deadlock trovato durante il tentativo di ottenere il blocco; provare a riavviare la transazione."
Causa
I deadlock possono avere più cause, ma il più comune è l'esecuzione di interazioni (siti web/processi/processi cron/altri utenti/manutenzione MySQL/importazioni MySQL) durante l'esecuzione di query DML/DDL contemporaneamente.
Ad esempio, è consigliabile evitare l'importazione di un database MySQL bloccato attivando prima la modalità di manutenzione per evitare di inviare al database richieste SQL che potrebbero causare deadlock e un'importazione di database bloccata.
Soluzione
-
Verificare la presenza di errori di deadlock nei registri applicazioni, distribuzione o MySQL:
-
Controllare l'elenco dei processi MySQL per l'esecuzione dei processi con il comando
mysql -e 'show full processlist';
-
Se utilizzi Adobe Commerce su infrastruttura cloud, verifica che MySQL slave sia abilitato. Consulta questo articolo: Distribuire le variabili (MYSQL_USE_SLAVE_CONNECTION).
-
A seconda degli errori coinvolti, la soluzione potrebbe presentarsi da sola o potrebbe essere necessario includere le informazioni di registro utili per aprire un ticket di supporto.