Looker riduce il carico sul database e migliora le prestazioni attraverso l'utilizzo dei risultati delle query SQL precedenti memorizzati nella cache quando disponibili e se consentito dai criteri di memorizzazione nella cache. Questa pagina descrive i criteri di memorizzazione nella cache predefiniti di Looker, nonché le opzioni disponibili per modificare la durata dei risultati memorizzati nella cache nell'istanza di Looker.
Come Looker utilizza le query memorizzate nella cache
Per le query SQL, il meccanismo di memorizzazione nella cache di Looker funziona come segue:
Quando viene eseguita una query SQL da un'esplorazione, un look o una dashboard, Looker controlla la cache per verificare se sono già presenti risultati memorizzati nella cache per quella query. I risultati memorizzati nella cache verranno utilizzati solo se tutti gli aspetti della query sono gli stessi, inclusi campi, filtri, parametri e limiti di righe.
Se vengono trovati risultati memorizzati nella cache, Looker controlla i criteri di memorizzazione nella cache definiti nel modello LookML per determinare se i risultati memorizzati nella cache sono scaduti. Se i risultati memorizzati nella cache non sono scaduti, Looker li utilizza per la query.
Se non vengono trovati risultati memorizzati nella cache per la query o se i risultati memorizzati nella cache sono scaduti, Looker esegue la query sul database. I nuovi risultati della query verranno quindi memorizzati nella cache.
I criteri di conservazione della cache predefiniti sono di un'ora. La sezione successiva, Modifica delle policy di conservazione della cache, descrive come ridurre o aumentare questo periodo di tempo, nonché le opzioni per sincronizzare le policy di conservazione della cache con il processo ETL (estrazione, trasformazione e caricamento) del database.
Modifica dei criteri di conservazione della cache
Puoi specificare i criteri di conservazione della cache a livello di esplorazione LookML e a livello di modello LookML.
Il meccanismo di memorizzazione nella cache consigliato è l'utilizzo di un datagroup parametro a livello di modello. I gruppi di dati ti consentono di sincronizzare i criteri di conservazione della cache di un modello con la pianificazione ETL del database utilizzando il parametro sql_trigger e impostando un intervallo di scadenza della cache con il parametro max_cache_age. Per ulteriori informazioni, consulta la sezione Memorizzazione nella cache delle query e ricreazione delle tabelle derivate persistenti (PDT) con i gruppi di dati.
Per un approccio più semplice, puoi utilizzare il persist_for parametro a livello di modello o di esplorazione. L'utilizzo del parametro persist_for in questo modo consente di impostare un intervallo di scadenza della cache che sostituisce l'intervallo predefinito di un'ora. Tuttavia, l'utilizzo di persist_for è meno efficace dell'utilizzo dei gruppi di dati per alcuni motivi, come descritto nella sezione Memorizzazione nella cache delle query con persist_for.
Se un'esplorazione o un modello ha un gruppo di dati o un parametro persist_for definito, i criteri di memorizzazione nella cache vengono modificati come segue:
- Prima della scadenza dell'intervallo
persist_foro dell'intervallomax_cache_agedel gruppo di dati: se la query viene eseguita di nuovo, Looker estrae i dati dalla cache. - Al momento della scadenza dell'intervallo
persist_foro dell'intervallomax_cache_agedel gruppo di dati: Looker elimina i dati dalla cache. - Dopo la scadenza dell'intervallo
persist_foro dell'intervallomax_cache_agedel gruppo di dati: se la query viene eseguita di nuovo, Looker estrae i dati direttamente dal database e reimposta l'intervallopersist_foromax_cache_age.
Un punto chiave è che i dati vengono eliminati dalla cache alla scadenza dell'intervallo persist_for o max_cache_age.
Se la cache raggiunge il limite di archiviazione, i dati vengono eliminati in base a un algoritmo LRU (Least Recently Used), senza alcuna garanzia che i dati con intervalli persist_for o max_cache_age scaduti vengano eliminati tutti in una volta.
Riduzione al minimo del tempo di permanenza dei dati nella cache
Looker scrive sempre i risultati delle query nella cache. Anche se gli intervalli persist_for e max_cache_age sono impostati su zero, i dati memorizzati nella cache potrebbero essere archiviati per un massimo di 10 minuti. Tutti i dati dei clienti archiviati nella cache del disco sono criptati con l'algoritmo AES (Advanced Encryption Standard).
Per ridurre al minimo il tempo di archiviazione dei dati nella cache:
- Per qualsiasi parametro
persist_for(per un modello o un'esplorazione) omax_cache_age(per un gruppo di dati), imposta il valore su0 minutes. Looker elimina la cache alla scadenza dell'intervallopersist_foro quando i dati raggiungono l'intervallomax_cache_agespecificato nel gruppo di dati . (Non è necessario impostare ilpersist_forparametro delle tabelle derivate persistenti (PDT) su0 minutesper ridurre al minimo la quantità di dati archiviati nella cache. Le PDT vengono scritte nel database stesso e non nella cache.) - Imposta il
suggest_persist_forparametro su un intervallo breve. Il valoresuggest_persist_forspecifica per quanto tempo Looker deve conservare i suggerimenti per i filtri nella cache. I suggerimenti per i filtri si basano su una query dei valori del campo che viene filtrato. Questi risultati della query vengono conservati nella cache in modo che Looker possa fornire rapidamente suggerimenti mentre l'utente digita nel campo di testo del filtro. Per impostazione predefinita, i suggerimenti per i filtri vengono memorizzati nella cache per 6 ore. Per ridurre al minimo il tempo di permanenza dei dati nella cache, imposta il valoresuggest_persist_forsu un valore inferiore, ad esempio5 minutes.
Verifica se una query è stata restituita dalla cache
In una finestra di esplorazione, puoi determinare se una query è stata restituita dalla cache esaminando le informazioni accanto al pulsante Esegui dopo aver eseguito una query.
Quando una query viene restituita dalla cache, viene visualizzato il testo "from cache". In caso contrario, viene visualizzato il tempo impiegato per restituire la query.
Forzare la generazione di nuovi risultati dal database
In una finestra di esplorazione, puoi forzare il recupero di nuovi risultati dal database. Dopo aver eseguito una query (incluse le query sui risultati uniti), seleziona l'opzione Cancella cache e aggiorna dal menu a forma di ingranaggio Azioni di esplorazione.
Memorizzazione nella cache delle query e ricreazione delle tabelle derivate persistenti (PDT) con i gruppi di dati
Utilizza i gruppi di dati per coordinare la pianificazione ETL (estrazione, trasformazione e caricamento) del database con i criteri di memorizzazione nella cache e la pianificazione di ricreazione delle tabelle derivate permanenti (PDT) di Looker.
Puoi utilizzare un gruppo di dati per specificare il trigger di ricreazione per le PDT in base al momento in cui vengono aggiunti nuovi dati al database. Poi puoi applicare lo stesso gruppo di dati all'esplorazione o al modello in modo che anche i risultati memorizzati nella cache scadano quando le PDT vengono ricreate.
In alternativa, puoi utilizzare un gruppo di dati per disaccoppiare il trigger di ricreazione delle PDT dall'età massima della cache. Questa opzione può essere utile se hai un'esplorazione basata su dati che vengono aggiornati molto spesso e uniti a una PDT che viene ricreata meno frequentemente. In questo caso, potresti voler reimpostare la cache delle query più spesso di quanto non venga ricreata la PDT.
Definizione di un gruppo di dati
Definisci un gruppo di dati con il datagroup parametro, in un file modello o in un file LookML separato. Puoi definire più gruppi di dati se vuoi criteri di memorizzazione nella cache e di ricreazione delle tabelle derivate permanenti (PDT) diversi per esplorazioni o PDT diverse nel tuo progetto.
Il parametro datagroup può avere i seguenti sottoparametri:
label: specifica un'etichetta facoltativa per il gruppo di dati.description: specifica una descrizione facoltativa per il gruppo di dati che può essere utilizzata per spiegare lo scopo e il meccanismo del gruppo di dati.max_cache_age: specifica una stringa che definisce un periodo di tempo. Quando l'età della cache di una query supera il periodo di tempo, Looker invalida la cache. La volta successiva che la query viene eseguita, Looker la invia al database per ottenere nuovi risultati.sql_trigger: specifica una query SQL che restituisce una riga con una colonna. Se il valore restituito dalla query è diverso dai risultati precedenti della query, lo stato del gruppo di dati risulta attivato.interval_trigger: specifica una pianificazione oraria per l'attivazione del gruppo di dati, ad esempio"24 hours".
Come minimo, un gruppo di dati deve avere almeno il parametro max_cache_age, il parametro sql_trigger o il parametro interval_trigger.
Di seguito è riportato un esempio di gruppo di dati con un parametro sql_trigger configurato per ricreare la PDT ogni giorno. Inoltre, il parametro max_cache_age è impostato per cancellare la cache delle query ogni due ore, nel caso in cui le esplorazioni uniscano le PDT ad altri dati che vengono aggiornati più spesso di una volta al giorno.
datagroup: customers_datagroup {
sql_trigger: SELECT DATE(NOW());;
max_cache_age: "2 hours"
}
Dopo aver definito il gruppo di dati, puoi assegnarlo a esplorazioni e PDT:
- Per assegnare il gruppo di dati a una PDT, utilizza il
datagroup_triggerparametro nelderived_tableparametro. Per un esempio, consulta la sezione Utilizzo di un gruppo di dati per specificare un trigger di ricreazione per le PDT in questa pagina. - Per assegnare il gruppo di dati a un'esplorazione, utilizza il parametro
persist_witha livello di modello o di esplorazione. Per un esempio, consulta la sezione Utilizzo di un gruppo di dati per specificare la reimpostazione della cache delle query per le esplorazioni in questa pagina.
Utilizzo di un gruppo di dati per specificare un trigger di ricreazione per le PDT
Per definire un trigger di ricreazione delle PDT utilizzando i gruppi di dati, crea un datagroup parametro con il sottoparametro sql_trigger o interval_trigger. Poi assegna il gruppo di dati alle singole PDT utilizzando il datagroup_trigger sottoparametro nella definizione derived_table della PDT. Se utilizzi datagroup_trigger per la PDT, non devi specificare altre strategie di persistenza per la tabella derivata. Se specifichi più strategie di persistenza per una PDT, riceverai un avviso nell'IDE di Looker e verrà utilizzato solo datagroup_trigger.
Di seguito è riportato un esempio di definizione di PDT che utilizza il gruppo di dati customers_datagroup. Questa definizione aggiunge anche diversi indici, sia su customer_id sia su first_order_date. Per ulteriori informazioni sulla definizione delle PDT, consulta la pagina della documentazione relativa alle tabelle derivate in Looker.
view: customer_order_facts {
derived_table: {
sql: ... ;;
datagroup_trigger: customers_datagroup
indexes: ["customer_id", "first_order_date"]
}
}
Per ulteriori informazioni su come funzionano i gruppi di dati con le PDT, consulta la pagina della documentazione relativa alle tabelle derivate in Looker.
Utilizzo di un gruppo di dati per specificare la reimpostazione della cache delle query per le esplorazioni
Quando viene attivato un gruppo di dati, il rigeneratore Looker ricrea le PDT che utilizzano quel gruppo di dati come strategia di persistenza. Una volta ricreate le PDT del gruppo di dati, Looker cancella la cache per le esplorazioni che utilizzano le PDT ricreate del gruppo di dati. Puoi aggiungere il parametro max_cache_age alla definizione del gruppo di dati se vuoi personalizzare una pianificazione di reimpostazione della cache delle query per il gruppo di dati. Il parametro max_cache_age ti consente di cancellare la cache delle query in base a una pianificazione specificata, oltre alla reimpostazione automatica della cache delle query eseguita da Looker quando le PDT del gruppo di dati vengono ricreate.
Per definire criteri di memorizzazione nella cache delle query con i gruppi di dati, crea un datagroup parametro con il max_cache_age sottoparametro.
Per specificare un gruppo di dati da utilizzare per le reimpostazioni della cache delle query nelle esplorazioni, utilizza il persist_with parametro:
- Per assegnare il gruppo di dati come predefinito per tutte le esplorazioni in un modello, utilizza il
persist_withparametro a livello di modello (in un file del modello). - Per assegnare il gruppo di dati alle singole esplorazioni, utilizza il
persist_withparametro in unexploreparametro.
Gli esempi seguenti mostrano un gruppo di dati denominato orders_datagroup definito in un file di modello. Il gruppo di dati ha un parametro sql_trigger che specifica che la query select max(id) from my_tablename verrà utilizzata per rilevare quando si è verificato un ETL. Anche se l'ETL non si verifica per un po' di tempo, il parametro max_cache_age del gruppo di dati specifica che i dati memorizzati nella cache verranno utilizzati solo per un massimo di 24 ore.
Il parametro persist_with del modello punta al criterio di memorizzazione nella cache orders_datagroup, il che significa che questo sarà il criterio di memorizzazione nella cache predefinito per tutte le esplorazioni nel modello. Tuttavia, poiché non vogliamo utilizzare il criterio di memorizzazione nella cache predefinito del modello per le esplorazioni customer_facts e customer_background, possiamo aggiungere il parametro persist_with per specificare un criterio di memorizzazione nella cache diverso per queste due esplorazioni. Le esplorazioni orders e orders_facts non hanno un parametro persist_with, quindi utilizzeranno il criterio di memorizzazione nella cache predefinito del modello orders_datagroup.
datagroup: orders_datagroup {
sql_trigger: SELECT max(id) FROM my_tablename ;;
max_cache_age: "24 hours"
}
datagroup: customers_datagroup {
sql_trigger: SELECT max(id) FROM my_other_tablename ;;
}
persist_with: orders_datagroup
explore: orders { ... }
explore: order_facts { ... }
explore: customer_facts {
persist_with: customers_datagroup
...
}
explore: customer_background {
persist_with: customers_datagroup
...
}
Se vengono specificati sia persist_with sia persist_for, riceverai un avviso di convalida e verrà utilizzato persist_with.
Utilizzo di un gruppo di dati per attivare le consegne pianificate
I gruppi di dati possono essere utilizzati anche per attivare la consegna di una dashboard o di un Look. Con questa opzione, Looker invierà i dati al completamento del gruppo di dati, in modo che i contenuti pianificati siano aggiornati.
Utilizzo del riquadro Amministrazione per i gruppi di dati
Se hai il ruolo di amministratore di Looker, puoi utilizzare la pagina Gruppi di dati del riquadro Amministrazione per visualizzare i gruppi di dati esistenti. Puoi visualizzare la connessione, il modello e lo stato attuale di ogni gruppo di dati e, se specificato in LookML, un'etichetta e una descrizione per ogni gruppo di dati. Puoi anche reimpostare la cache per un gruppo di dati, attivare il gruppo di dati o passare al LookML del gruppo di dati.
Memorizzazione nella cache delle query con persist_for
Utilizza il parametro persist_for a livello di modello o di esplorazione per modificare l'intervallo di conservazione della cache predefinito di Looker di 1 ora. Puoi impostare intervalli di 0 minutes e intervalli fino a 8760 hours (1 anno) o superiori.
La definizione dei parametri persist_for può essere più rapida e semplice, ma meno efficace, rispetto a definire i gruppi di dati. I gruppi di dati sono consigliati rispetto a persist_for per i seguenti motivi:
- I gruppi di dati possono essere sincronizzati con il processo ETL del database.
- Puoi riutilizzare i gruppi di dati in più modelli ed esplorazioni. Ciò significa che puoi aggiornare il parametro
max_cache_agedi un gruppo di dati e il criterio di memorizzazione nella cache verrà aggiornato in ogni punto in cui viene utilizzato il gruppo di dati. - Puoi cancellare tutta la cache associata a un gruppo di dati dalla pagina Gruppi di dati.