Deadlocks no MySQL
Este artigo fala sobre bloqueios no MySQL para ajudar a identificá-los e resolvê-los se causarem uma inatividade do site, importação de banco de dados travada ou outros problemas do Adobe Commerce.
Produtos e versões afetados
- Adobe Commerce no local 2.2.x e 2.3.x
- Adobe Commerce na infraestrutura em nuvem 2.2.x e 2.3.x
Problema
Os bloqueios no MySQL ocorrem quando duas ou mais transações são mutuamente mantidas e solicitam bloqueios. Os bloqueios que estão presentes nem sempre indicam um problema, mas geralmente são um sintoma de algum outro problema do MySQL ou do Adobe Commerce que ocorreu.
Frequentemente, o aplicativo, a implantação ou os logs do MySQL mencionarão um erro "deadlock" ou o erro "Deadlock encontrado ao tentar obter bloqueio; tente reiniciar a transação."
Causa
Os bloqueios podem ter várias causas, mas a mais comum é se você executar qualquer interação (site/processos/jobs cron/outros usuários/manutenção do MySQL/importações do MySQL) enquanto executa consultas DML/DDL ao mesmo tempo.
Como exemplo, é uma prática recomendada evitar uma importação de banco de dados MySQL travada, colocando primeiro o site no modo de manutenção para evitar obter solicitações SQL para o banco de dados que poderiam causar bloqueios e uma importação de banco de dados travada.
Solução
-
Verifique se há erros de deadlock no aplicativo, na implantação ou nos logs MySQL:
-
Verifique sua lista de processos do MySQL para executar processos com o comando
mysql -e 'show full processlist';
-
Se estiver no Adobe Commerce na infraestrutura em nuvem, verifique se o MySQL slave está ativado. Consulte este artigo: Implantar variáveis (MYSQL_USE_SLAVE_CONNECTION).
-
Dependendo dos erros envolvidos, a solução pode se apresentar ou talvez você precise incluir suas informações de log úteis se precisar abrir um Tíquete de Suporte.