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

NOTE
La patch potrebbe diventare applicabile ad altre versioni con le nuove versioni di Quality Patches Tool. Per verificare se la patch è compatibile con la versione di Adobe Commerce in uso, aggiornare il pacchetto 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:

  1. Configurare Adobe Commerce Develop utilizzando il toolkit delle prestazioni small.xml.

  2. 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;
    
  3. Popolare la tabella search_query con un numero elevato di record, ad esempio 4 milioni di record.

  4. Attiva la reindicizzazione e svuota le cache.

    code language-none
    bin/magento indexer:reindex
    bin/magento c:c
    bin/magento c:f
    
  5. Abilita registri di debug del database:

    code language-none
    bin/magento dev:query-log:enable
    
  6. Cerca un termine nella barra di ricerca della vetrina, ad esempio,
    http://your_magento_instance/default/catalogsearch/result/?q=test.

  7. 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:

Lettura correlata

Per ulteriori informazioni su Quality Patches Tool, vedere:

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