DocumentaçãoCommerceKB do Commerce

Somente PaaS

Verificando consultas e processos lentos MySQL

Última atualização: 5 de maio de 2025
  • Tópicos:

Criado para:

  • Desenvolvedor

Este artigo fala sobre alguns problemas comuns do MySQL (consultas lentas, processos demorando muito) que podem afetar negativamente o site de um comerciante e as soluções que eles indicam.

Verificação de "consultas lentas" do MySQL

Descrição

Se você tiver uma interrupção possivelmente causada por um banco de dados sobrecarregado, essas etapas ajudarão a verificar o log de consultas lentas do seu banco de dados.

Analisar consultas usando a linha de comando MySQL (Adobe Commerce Cloud/on-premise/Magento Open Source)

  1. Faça logon na linha de comando do MySQL (Adobe Commerce no local/Magento Open Source) ou no servidor de nuvem na linha de comando (Adobe Commerce na infraestrutura de nuvem).

  2. Examine o log de consulta lenta para consultas com mais de 50 segundos:

    grep 'Query_time: [5-9][0-9]|Query_time: [0-9][0-9][0-9]' /var/log/mysql/mysql-slow.log -A 3
    
  3. Vá para https://www.unixtimestamp.com/ (ou um Conversor de Carimbo de Data/Hora Unix semelhante) e insira o carimbo de data/hora de quando a consulta lenta foi executada.

  4. Se o tempo estiver correlacionado com qualquer interrupção de site que você tenha experimentado, pode ser causado por um banco de dados sobrecarregado. Verifique quais cargas estavam no banco de dados naquele momento. Exemplos dessas cargas:

  • Processos Cron
  • Tráfego (bots ou people)
  • Scripts de importação/exportação
  • Criação de despejos

Analisar consultas usando o Percona Toolkit (Adobe Commerce Pro: somente arquitetura em nuvem)

Se seu projeto do Adobe Commerce for implantado na arquitetura Pro, você poderá usar o Percona Toolkit para analisar consultas.

  1. Execute o comando pt-query-digest --type=slowlog nos logs de consulta lenta do MySQL.

    • Para encontrar o local dos logs de consulta lenta, consulte Log locations > Service Logs em nossa documentação para desenvolvedores.
    • Consulte a documentação Percona Toolkit > pt-query-digest.
  2. Com base nos problemas encontrados, siga as etapas para corrigir o query, para que ele seja executado mais rapidamente.

Verificando a "lista de processos" do MySQL

Descrição

Isso ajudará a identificar se o servidor MySQL está ativo e se não há consultas presas.

Etapas

  1. Faça logon na linha de comando do MySQL (Adobe Commerce no local/Magento Open Source) ou no servidor de nuvem na linha de comando (Adobe Commerce na infraestrutura de nuvem).

  2. Faça logon no MySQL usando o bloco de código abaixo. Isso automatizará o processo de logon.

    `export DB_NAME=$(grep [\']db[\'] -A 20 app/etc/env.php | grep dbname | head -n1 | sed "s/.*[=][>][ ]*[']//" | sed "s/['][,]//");    export MYSQL_HOST=$(grep [\']db[\'] -A 20 app/etc/env.php | grep host | head -n1 | sed "s/.*[=][>][ ]*[']//" | sed "s/['][,]//");    export DB_USER=$(grep [\']db[\'] -A 20 app/etc/env.php | grep username | head -n1 | sed "s/.*[=][>][ ]*[']//" | sed "s/['][,]//");    export MYSQL_PWD=$(grep [\']db[\'] -A 20 app/etc/env.php | grep password | head -n1 | sed "s/.*[=][>][ ]*[']//" | sed "s/[']$//" | sed "s/['][,]//");    mysql -h $MYSQL_HOST -u $DB_USER --password=$MYSQL_PWD $DB_NAME -U -A -e 'show processlist;`
    
  3. Se você receber um erro de volta ou se a resposta demorar mais de 30 segundos, entre em contato com o suporte para verificar o servidor MySQL.

  4. Observando a saída de exemplo.

  5. Este é um exemplo de saída:

    `$ mysql -h $MYSQL_HOST -u $DB_USER --password=$MYSQL_PWD $DB_NAME -U -A -e 'show processlist;'    +-----------+---------------+--------------------+---------------+---------+------+----------------+------------------------------------------------------------------------------------------------------+----------+    | Id        | User          | Host               | db            | Command | Time | State          | Info                                                                                                 | Progress |    +-----------+---------------+--------------------+---------------+---------+------+----------------+------------------------------------------------------------------------------------------------------+----------+    | 123456789 | abcdefghijklm | 192.168.7.10:12345 | abcdefghijklm | Query   |    0 | Writing to net | SELECT `magento_versionscms_hierarchy_node`.*, `page_table`.`title` AS `page_title`, `page_table`.`i |    0.000 |    | 123456788 | abcdefghijklm | 192.168.7.10:12344 | abcdefghijklm | Sleep   |    0 |                | NULL                                                                                                 |    0.000 |    | 123456777 | abcdefghijklm | 192.168.7.10:12333 | abcdefghijklm | Sleep   |    0 |                | NULL                                                                                                 |    0.000 |    | 123456666 | abcdefghijklm | 192.168.5.8:12222  | abcdefghijklm | Sleep   |    0 |                | NULL                                                                                                 |    0.000 |`
    
  6. Verifique a coluna "Tempo" para qualquer tempo superior a 1800 segundos; isso indica que um processo está possivelmente demorando muito para ser concluído. Observe o status dos processos na coluna "Estado".

  7. Revise as consultas e possivelmente elimine-as se elas não forem executadas por esse período. É possível que as consultas de longa execução sejam esperadas.

Leitura relacionada

  • Sintaxe MySQL Show Processlist em dev.mysql.com.
  • Sintaxe de eliminação do MySQL em dev.mysql.com.
  • Segurança, desempenho e manuseio de dados na documentação do desenvolvedor.
  • Ajuda do MySQL em nossa documentação para desenvolvedores.
recommendation-more-help
8bd06ef0-b3d5-4137-b74e-d7b00485808a