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
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:
-
Configure o Adobe Commerce Develop usando o kit de ferramentas de desempenho
small.xml
. -
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;
-
Preencha a tabela
search_query
com um grande número de registros, por exemplo: 4 milhões de registros. -
Acione caches de reindexação e liberação.
code language-none bin/magento indexer:reindex bin/magento c:c bin/magento c:f
-
Habilitar logs de depuração do banco de dados:
code language-none bin/magento dev:query-log:enable
-
Pesquise um termo na barra de pesquisa da loja, por exemplo,
http://your_magento_instance/default/catalogsearch/result/?q=test.
-
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:
- Adobe Commerce ou Magento Open Source no local: Quality Patches Tool > Uso no guia Quality Patches Tool.
- Adobe Commerce na infraestrutura em nuvem: Atualizações e patches > Aplicar patches no guia do Commerce na infraestrutura em nuvem.
Leitura relacionada
Para saber mais sobre Quality Patches Tool, consulte:
- Quality Patches Tool: uma ferramenta de autoatendimento para patches de qualidade no guia Ferramentas.