Problemi di prestazioni di query delle risorse DAM causati da avvisi di attraversamento e da un utilizzo inefficiente dell’indice

Le query sulle risorse DAM di Adobe Experience Manager (AEM) diventano lente, si interrompono o hanno esito negativo quando set di risultati di grandi dimensioni, sintassi di query non supportata, selezione inefficiente dell’indice o filtri di query insufficienti causano un attraversamento eccessivo dei nodi. Il problema riguarda le query di Query Builder, le query SQL2, i processi di pianificazione, gli endpoint API e le prestazioni di ricerca delle risorse DAM. Per risolvere il problema, ottimizza le query, migliora l’indicizzazione e riduce l’attraversamento.

Descrizione description

Ambiente

Adobe Experience Manager as a Cloud Service (AEMaaCS)

Problema/Sintomi

  • Timeout delle query o ritorno*“L’indice ha attraversato troppi nodi”* avvisi.
  • Le query SQL2 hanno esito negativo con errori di analisi perché Oak trasforma la sintassi LIMIT non supportata. Ad esempio, LIMIT 1 diventa LIMIT(*)1, generando un’eccezione ParseException.
  • Gli endpoint di Query Builder restituiscono risposte di interruzione del servizio quando percorsi DAM di grandi dimensioni attivano l’attraversamento pesante.
  • L’output di Explain Query non mostra alcun utilizzo dell’indice e visualizza Indici utilizzati: nessuno.
  • Le query su percorsi DAM di grandi dimensioni, ad esempio /content/dam/..., richiedono centinaia di secondi o vengono interrotte quando si utilizza p.limit=-1.

Causa principale

Il problema si verifica perché query DAM di grandi dimensioni senza filtri adeguati forzano Oak a scansionare un numero eccessivo di nodi. Sintassi SQL2 LIMIT/OFFSET non supportata, selezione di indici non valida, condizioni non supportate come IS NULL e set di risultati non limitati impediscono un utilizzo efficiente dell’indice. Le gerarchie di cartelle di grandi dimensioni possono inoltre causare timeout HTTP, esaurimento delle risorse e avvisi di attraversamento quando le query non sono ottimizzate.

Risoluzione resolution

Per identificare il problema e migliorare le prestazioni delle query DAM, segui la procedura riportata di seguito.

  1. Identifica il tipo di errore della query esaminando i registri, i risultati del debugger di Query Builder, l’output Prestazioni query e Spiega risultati query.
  2. Ridurre i set di risultati di grandi dimensioni sostituendo p.limit=-1 con un limite ragionevole e riducendo l’ambito della query quando si eseguono query su gerarchie DAM di grandi dimensioni.
  3. Sostituire la sintassi SQL2 LIMIT/OFFSET non supportata con la sintassi supportata, ad esempio OPTION(LIMIT 1), e utilizzare l’impaginazione di Query Builder quando necessario.
  4. Rivedi Spiega output query e verifica che la query utilizzi l’indice DAM previsto invece degli indici di fallback.
  5. Applica il tag di indice appropriato quando in Explain Query viene visualizzata una selezione non corretta. Ad esempio, aggiungere option(index tag assetsOmnisearch) quando richiesto.
  6. Rimuovere o ristrutturare le condizioni IS NULL che impediscono l’utilizzo dell’indice e forzano l’attraversamento.
  7. Dividi le query in sottoquery più piccole quando la gerarchia DAM contiene strutture di cartelle molto grandi. Ad esempio, divide le query per sottocartella invece di eseguire query su un singolo percorso contenente decine di migliaia di risorse.
  8. Aggiungi ulteriori filtri di metadati, ad esempio data, tipo di risorsa o altre proprietà indicizzate, per ridurre il numero di nodi analizzati e migliorare l’idoneità dell’indice.
  9. Convalida la risoluzione eseguendo nuovamente la query, esaminando l’output di Explain Query, confermando l’utilizzo corretto dell’indice e assicurandosi che non si verifichino più avvisi di attraversamento e timeout.

Quando inoltrare la richiesta

  • Gli avvisi di attraversamento continuano dopo l’applicazione dei limiti e dei filtri delle query.
  • Dopo l’ottimizzazione della query, Explain Query continua a non mostrare alcun utilizzo dell’indice.
  • La sintassi SQL2 supportata ha comunque esito negativo dopo la correzione della query.
  • Gli endpoint di Query Builder continuano a restituire errori di interruzione del servizio dopo l’ottimizzazione e la convalida dell’indice.

Lettura correlata

recommendation-more-help
experience-cloud-kcs-help-kbarticles