ACSD-62577: Ottimizzazione delle prestazioni di ricerca in vetrina
La patch ACSD-62577 risolve il problema con le prestazioni lente delle query di ricerca in vetrina ottimizzando sia gli indici di query che di tabella. Questa patch è disponibile con Quality Patches Tool (QPT) 1.1.56. L’ID della patch è ACSD-62577. Il problema era pianificato per essere risolto in Adobe Commerce 2.4.8.
Prodotti e versioni interessati
La patch è stata creata per la versione di Adobe Commerce:
Adobe Commerce (tutti i metodi di implementazione) 2.4.6, 2.4.7-p2
Compatibile con le versioni di Adobe Commerce:
Adobe Commerce (tutti i metodi di implementazione) 2.4.4 - 2.4.7-p3
magento/quality-patches
alla versione più recente e verificare la compatibilità nella pagina Quality Patches Tool: Cerca patch. Utilizza l’ID patch come parola chiave di ricerca per individuare la patch.Problema
Le tabelle search_query
di grandi dimensioni rallentano notevolmente le ricerche nella vetrina, aumentando i tempi di risposta front-end a causa di query inefficienti e della mancanza di indici di tabella ottimizzati.
Passaggi da riprodurre:
-
Configurare Adobe Commerce Develop utilizzando il toolkit delle prestazioni
small.xml
. -
Accedere alla riga di comando SQL ed eliminare la tabella
search_query
utilizzando i comandi seguenti:code language-none SET FOREIGN_KEY_CHECKS = 0; DROP TABLE search_query; SET FOREIGN_KEY_CHECKS = 1;
-
Popolare la tabella
search_query
con un numero elevato di record, ad esempio 4 milioni di record. -
Attiva la reindicizzazione e svuota le cache.
code language-none bin/magento indexer:reindex bin/magento c:c bin/magento c:f
-
Abilita registri di debug del database:
code language-none bin/magento dev:query-log:enable
-
Cerca un termine nella barra di ricerca della vetrina, ad esempio,
http://your_magento_instance/default/catalogsearch/result/?q=test.
-
Controllare
db.log
per il tempo di esecuzione della query per le istruzioni SQL seguenti: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')
Risultati previsti:
Il tempo di esecuzione della query è ottimizzato, con conseguente aumento meno significativo del tempo di risposta durante l'elaborazione di search_query
tabelle di grandi dimensioni.
Risultati effettivi:
Il tempo di esecuzione della query aumenta in modo significativo a causa della gestione inefficiente della tabella search_query
di grandi dimensioni:
TIME: 10.8520 seconds
Applicare la patch
Per applicare singole patch, utilizzare i collegamenti seguenti, a seconda del metodo di distribuzione utilizzato:
- Adobe Commerce o Magento Open Source locale: Quality Patches Tool > Utilizzo nella guida di Quality Patches Tool.
- Adobe Commerce su infrastruttura cloud: Aggiornamenti e patch > Applica patch nella guida Commerce su infrastruttura cloud.
Lettura correlata
Per ulteriori informazioni su Quality Patches Tool, vedere:
- Quality Patches Tool: strumento self-service per patch di qualità nella guida degli strumenti.