Queste best practice riflettono i consigli condivisi da un team interfunzionale di esperti di Looker. Questi approfondimenti derivano da anni di esperienza di collaborazione con i clienti di Looker, dall'implementazione al successo a lungo termine. Le pratiche sono scritte per funzionare per la maggior parte degli utenti e delle situazioni, ma devi usare il tuo buon senso durante l'implementazione.
Ottimizza le prestazioni delle query
Per assicurarti che le query vengano create ed eseguite in modo ottimale nel database, segui questi suggerimenti per il frontend e il backend:
-
Crea esplorazioni utilizzando i join
many_to_one, se possibile. Unire le visualizzazioni dal livello più granulare al livello di dettaglio più elevato (many_to_one) in genere offre il miglior rendimento delle query. -
Massimizza la memorizzazione nella cache per la sincronizzazione con le tue norme ETL, ove possibile, per ridurre il traffico di query del database. Per impostazione predefinita, Looker memorizza nella cache le query per un'ora. Puoi controllare il criterio di memorizzazione nella cache e sincronizzare gli aggiornamenti dei dati di Looker con il processo ETL applicando i gruppi di dati
all'interno delle esplorazioni utilizzando il parametro
persist_with. In questo modo, Looker può integrarsi più strettamente con la pipeline di dati di backend, in modo che l'utilizzo della cache possa essere massimizzato senza il rischio di analizzare dati obsoleti. I criteri di memorizzazione nella cache denominati possono essere applicati a un intero modello e/o a singole esplorazioni e tabelle derivate persistenti (PDT). - Utilizza la funzionalità di consapevolezza aggregata di Looker per creare tabelle di riepilogo o roll-up che Looker può utilizzare per le query, se possibile, soprattutto per le query comuni di database di grandi dimensioni. Puoi anche sfruttare il riconoscimento degli aggregati per migliorare drasticamente il rendimento di intere dashboard. Per ulteriori informazioni, consulta il tutorial sulla consapevolezza aggregata.
- Utilizza le Tabelle derivate persistenti (PDT) per query più rapide. Converti le esplorazioni con molti join complessi o non performanti oppure dimensioni con sottoquery o sottoselezioni in PDT in modo che le viste vengano unite in precedenza e siano pronte prima del runtime.
- Se il tuo dialetto del database supporta le PDT incrementali, configura le PDT incrementali per ridurre il tempo che Looker impiega per ricostruire le PDT.
- Evita di unire le visualizzazioni in Explore in base a chiavi primarie concatenate definite in Looker. Esegui invece il join sui campi di base che compongono la chiave primaria concatenata della vista. In alternativa, ricrea la vista come PDT con la chiave primaria concatenata predefinita nella definizione SQL della tabella, anziché nel LookML di una vista.
- Utilizza lo strumento Spiega in SQL Runner per il benchmarking.
EXPLAINproduce una panoramica del piano di esecuzione delle query del tuo database per una determinata query SQL, consentendoti di rilevare i componenti della query che possono essere ottimizzati. Scopri di più nel post della scheda Community Come ottimizzare SQL conEXPLAIN. -
Dichiara gli indici. Puoi esaminare gli indici di ogni tabella direttamente in Looker da SQL Runner facendo clic sull'icona a forma di ingranaggio in una tabella e selezionando Mostra indici.
Le colonne più comuni che possono trarre vantaggio dagli indici sono le date importanti e le chiavi esterne. L'aggiunta di indici a queste colonne aumenterà il rendimento di quasi tutte le query. Lo stesso vale per i PDT. I parametri LookML, come
indexes,sort keysedistribution, possono essere applicati in modo appropriato. - Aumenta la memoria, i core e l'I/O (input/output) dei database con hardware insufficiente o risorse di provisioning necessarie (come AWS) per l'elaborazione di set di dati di grandi dimensioni, in modo da migliorare le prestazioni delle query.
Ottimizzare il rendimento del server Looker
Puoi anche adottare misure per garantire che il server e l'applicazione Looker funzionino in modo ottimale:
- Limita il numero di elementi all'interno di una singola dashboard. Non esiste una regola precisa per definire il numero, perché la progettazione di ogni elemento influisce sul consumo di memoria in base a una serie di fattori. Tuttavia, le dashboard con 25 o più riquadri tendono a essere problematiche in termini di prestazioni.
- Utilizza in modo strategico la funzionalità di aggiornamento automatico della dashboard. Se una dashboard utilizza l'aggiornamento automatico, assicurati che non si aggiorni più rapidamente dei processi ETL in esecuzione in background.
- Utilizza i pivot in modo strategico ed evita di utilizzarli eccessivamente nei riquadri delle dashboard e nei Look. Le query con dimensioni pivotate consumano più memoria. Più dimensioni vengono pivotate, più memoria viene utilizzata quando vengono caricati i contenuti (un'esplorazione, un look o una dashboard).
- Utilizza con parsimonia funzionalità come unione dei risultati, campi personalizzati e calcoli tabulari. Queste funzionalità sono pensate per essere utilizzate come prove concettuali per aiutarti a progettare il tuo modello. La best practice prevede di codificare in modo permanente tutti i calcoli e le funzioni utilizzati di frequente in LookML, che genererà SQL da elaborare nel database. I calcoli eccessivi possono competere per la memoria Java nell'istanza Looker, causando una risposta più lenta dell'istanza.
-
Limita il numero di visualizzazioni incluse in un modello quando è presente un numero elevato di file di visualizzazione. L'inclusione di tutte le visualizzazioni in un unico modello può rallentare le prestazioni. Quando in un progetto è presente un numero elevato di visualizzazioni, valuta la possibilità di includere solo i file di visualizzazione necessari in ogni modello. Valuta la possibilità di utilizzare convenzioni di denominazione strategiche per i nomi dei file delle visualizzazioni, in modo da consentire l'inclusione di gruppi di visualizzazioni all'interno di un modello. Un esempio è descritto nella documentazione del parametro
includes. -
Evita di restituire un numero elevato di punti dati per impostazione predefinita all'interno dei riquadri delle dashboard e dei Look. Le query che restituiscono migliaia di punti dati consumano più memoria. Assicurati che i dati siano limitati il più possibile applicando
filtri frontend a dashboard, look ed esplorazioni e a livello di LookML con i parametri
required filters,conditionally_filteresql_always_where. - Scarica o distribuisci le query utilizzando l'opzione Tutti i risultati con parsimonia, poiché alcune query possono essere molto grandi e sovraccaricare il server Looker durante l'elaborazione.
- Comprendere l'impatto del rendimento della connessione sull'intera istanza di Looker. Looker utilizza risorse condivise per elaborare le query di tutte le connessioni al database. Queste risorse includono pod Kubernetes, code di query e pool di thread. A causa di questa infrastruttura condivisa, una singola connessione al database lenta o sovraccarica può influire negativamente sulle prestazioni delle query su tutte le altre connessioni. Se noti un peggioramento generalizzato delle prestazioni, esamina lo stato di tutte le connessioni al database, non solo di quelle direttamente correlate ai dashboard o alle esplorazioni lenti.
Per ulteriore assistenza nell'identificazione dell'origine dei problemi di rendimento, consulta la pagina delle best practice Panoramica del rendimento.