ACSD-62577: otimização de desempenho de pesquisa de vitrine

O patch ACSD-62577 corrige o problema de desempenho lento de consultas de pesquisa da loja ao otimizar índices de consulta e tabela. Este patch está disponível com o Quality Patches Tool (QPT) 1.1.56. A ID do patch é ACSD-62577. Observe que o problema foi agendado para ser corrigido no Adobe Commerce 2.4.8.

Produtos e versões afetados

O patch foi criado para a versão do Adobe Commerce:

Adobe Commerce (todos os métodos de implantação) 2.4.6, 2.4.7-p2

Compatível com as versões do Adobe Commerce:

Adobe Commerce (todos os métodos de implantação) 2.4.4 - 2.4.7-p3

NOTE
O patch pode se tornar aplicável a outras versões com as novas versões do Quality Patches Tool. Para verificar se o patch é compatível com a sua versão do Adobe Commerce, atualize o pacote magento/quality-patches para a versão mais recente e verifique a compatibilidade na Quality Patches Tool: página Procurar patches. Use a ID do patch como palavra-chave de pesquisa para localizar o patch.

Problema

As tabelas search_query grandes retardam significativamente as pesquisas de vitrine eletrônica, aumentando os tempos de resposta de front-end devido a consultas ineficientes e à falta de índices de tabela otimizados.

Etapas a serem reproduzidas:

  1. Configure o Adobe Commerce Develop usando o kit de ferramentas de desempenho small.xml.

  2. Acesse a linha de comando SQL e exclua a tabela search_query usando os seguintes comandos:

    code language-none
    SET FOREIGN_KEY_CHECKS = 0;
    DROP TABLE search_query;
    SET FOREIGN_KEY_CHECKS = 1;
    
  3. Preencha a tabela search_query com um grande número de registros, por exemplo: 4 milhões de registros.

  4. Acione caches de reindexação e liberação.

    code language-none
    bin/magento indexer:reindex
    bin/magento c:c
    bin/magento c:f
    
  5. Habilitar logs de depuração do banco de dados:

    code language-none
    bin/magento dev:query-log:enable
    
  6. Pesquise um termo na barra de pesquisa da loja, por exemplo,
    http://your_magento_instance/default/catalogsearch/result/?q=test.

  7. Verifique o db.log para o tempo de execução da consulta para o seguinte SQL:

    code language-none
    SELECT COUNT(*) FROM (
    SELECT DISTINCT `main_table`.`query_text`
    FROM `search_query` AS `main_table`
    WHERE (main_table.store_id IN (1))
    AND (main_table.num_results > 0)
    ORDER BY `main_table`.`popularity` DESC
    LIMIT 100  ) AS `result` WHERE (result.query_text = 'test')
    

Resultados esperados:

O tempo de execução da consulta é otimizado, resultando em um aumento menos significativo no tempo de resposta ao processar tabelas search_query grandes.

Resultados reais:

O tempo de execução da consulta aumenta significativamente devido à manipulação ineficiente da tabela search_query grande:

TIME: 10.8520 seconds

Aplicar o patch

Para aplicar patches individuais, use os links a seguir, dependendo do método de implantação:

Leitura relacionada

Para saber mais sobre Quality Patches Tool, consulte:

recommendation-more-help
c2d96e17-5179-455c-ad3a-e1697bb4e8c3