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 la policy di memorizzazione nella cache predefinita di Looker, nonché le opzioni disponibili per modificare la durata dei risultati memorizzati nella cache nell'istanza 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 una query SQL viene eseguita da un'esplorazione, un Look o una dashboard, Looker controlla la cache per verificare se esistono già risultati memorizzati nella cache per quella query. I risultati memorizzati nella cache verranno utilizzati solo se tutti gli aspetti della query sono uguali, inclusi campi, filtri, parametri e limiti di righe.
Se vengono trovati risultati memorizzati nella cache, Looker controlla il criterio di memorizzazione nella cache definito 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 eseguirà la query sul database. I nuovi risultati della query verranno quindi memorizzati nella cache.
Il criterio di conservazione della cache predefinito è un'ora. La sezione successiva, Modifica dei criteri di conservazione della cache, descrive come ridurre o aumentare questo periodo di tempo, nonché le opzioni per sincronizzare i criteri di conservazione della cache con il processo ETL (estrazione, trasformazione e caricamento) del database.
Modifica delle policy 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 parametro datagroup
a livello di modello. I gruppi di dati ti consentono di sincronizzare la norma 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 saperne di più, consulta la sezione Memorizzazione nella cache delle query e ricreazione delle tabelle derivate permanenti (PDT) con i gruppi di dati.
Per un approccio più semplice, puoi utilizzare il parametro persist_for
a livello di modello o a livello di esplorazione. L'utilizzo del parametro persist_for
in questo modo consente di impostare un intervallo di scadenza della cache che esegue l'override dell'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 persist_for
definito, il criterio di memorizzazione nella cache viene modificato come segue:
- Prima della scadenza dell'intervallo
persist_for
o dell'intervallomax_cache_age
del gruppo di dati: se la query viene eseguita di nuovo, Looker estrae i dati dalla cache. - Al momento della scadenza dell'intervallo
persist_for
o dell'intervallomax_cache_age
del gruppo di dati: Looker elimina i dati dalla cache. - Dopo la scadenza dell'intervallo
persist_for
o dell'intervallomax_cache_age
del gruppo di dati: se la query viene eseguita di nuovo, Looker estrae i dati direttamente dal database e reimposta l'intervallopersist_for
omax_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 spazio di archiviazione, i dati vengono espulsi 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.
Ridurre al minimo il tempo di permanenza dei dati nella cache
Looker scriverà sempre i risultati della query nella cache. Anche se gli intervalli persist_for
e max_cache_age
sono impostati su zero, i dati memorizzati nella cache potrebbero comunque essere archiviati per un massimo di 10 minuti. Tutti i dati dei clienti archiviati nella cache del disco sono criptati con Advanced Encryption Standard (AES).
Per ridurre al minimo il periodo di tempo in cui i dati vengono memorizzati 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 quando scade l'intervallopersist_for
o quando i dati raggiungono l'intervallomax_cache_age
specificato nel relativo datagroup. Non è necessario impostare il parametropersist_for
delle tabelle derivate persistenti (PDT) su0 minutes
per ridurre al minimo la quantità di dati memorizzati nella cache. Le PDT vengono scritte nel database stesso e non nella cache. - Imposta il parametro
suggest_persist_for
su un intervallo breve. Il valoresuggest_persist_for
specifica 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 valore disuggest_persist_for
su un valore inferiore, ad esempio5 minutes
.
Verificare se una query è stata restituita dalla cache
In una finestra Esplora, 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 "dalla cache". In caso contrario, viene visualizzato il tempo impiegato per restituire la query.
Forzare la generazione di nuovi risultati dal database
In una finestra Esplora, puoi forzare il recupero di nuovi risultati dal database. Dopo aver eseguito una query (incluse le query con risultati uniti), seleziona l'opzione Svuota cache e aggiorna dal menu a forma di ingranaggio Azioni di esplorazione.
Memorizzazione nella cache delle query e ricreazione delle tabelle derivate permanenti (PDT) con i gruppi di dati
Utilizza i gruppi di dati per coordinare la pianificazione ETL (estrazione, trasformazione e caricamento) del database con il criterio 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. A questo punto puoi applicare lo stesso datagroup all'esplorazione o al modello in modo che anche i risultati memorizzati nella cache scadano quando le PDT vengono ricompilate.
In alternativa, puoi utilizzare un gruppo di dati per dissociare il trigger di ricreazione della 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 ricompilata meno spesso. In questo caso, potresti voler reimpostare la cache delle query più spesso rispetto alla ricostruzione della tabella derivata.
Definizione di un gruppo di dati
Definisci un gruppo di dati con il parametro datagroup
, in un file modello o nel proprio file LookML. 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
.
Ecco un esempio di gruppo di dati con un sql_trigger
configurato per ricreare la PDT ogni giorno. Inoltre, max_cache_age
è impostato per cancellare la cache delle query ogni due ore, nel caso in cui le esplorazioni uniscano PDT ad altri dati che vengono aggiornati più di una volta al giorno.
datagroup: customers_datagroup {
sql_trigger: SELECT DATE(NOW());;
max_cache_age: "2 hours"
}
Una volta definito il gruppo di dati, puoi assegnarlo a esplorazioni e PDT:
- Per assegnare il gruppo di dati a una PDT, utilizza il parametro
datagroup_trigger
nel parametroderived_table
. Per un esempio, consulta la sezione Utilizzare 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_with
a livello di modello o a livello di esplorazione. Per un esempio, consulta la sezione Utilizzare un gruppo di dati per specificare la reimpostazione della cache delle query per le esplorazioni in questa pagina.
Utilizzare un gruppo di dati per specificare un trigger di ricreazione per le PDT
Per definire un trigger di ricreazione della PDT utilizzando i gruppi di dati, crea un parametro datagroup
con il parametro secondario sql_trigger
o interval_trigger
. Quindi, assegna il gruppo di dati alle singole PDT utilizzando il parametro secondario datagroup_trigger
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 un PDT, riceverai un avviso nell'IDE di Looker e verrà utilizzata solo la strategia 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
che su first_order_date
. Per saperne di più sulla definizione delle PDT, consulta la pagina della documentazione Tabelle derivate in Looker.
view: customer_order_facts {
derived_table: {
sql: ... ;;
datagroup_trigger: customers_datagroup
indexes: ["customer_id", "first_order_date"]
}
}
Per saperne di più su come i gruppi di dati funzionano con le PDT, consulta la pagina della documentazione 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 ricostruisce le PDT che utilizzano quel gruppo di dati come strategia di persistenza. Una volta ricreate le PDT del gruppo di dati, Looker svuota la cache delle 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
consente di cancellare la cache delle query in base a una pianificazione specificata, oltre al ripristino automatico della cache delle query eseguito da Looker quando vengono ricreate le PDT del gruppo di dati.
Per definire un criterio di memorizzazione nella cache delle query con i gruppi di dati, crea un parametro datagroup
con il sottoparametro max_cache_age
.
Per specificare un gruppo di dati da utilizzare per i ripristini della cache delle query nelle esplorazioni, utilizza il parametro persist_with
:
- Per assegnare il gruppo di dati come predefinito per tutte le esplorazioni in un modello, utilizza il parametro
persist_with
a livello di modello (in un file del modello). - Per assegnare il gruppo di dati alle singole esplorazioni, utilizza il parametro
persist_with
in un parametroexplore
.
Gli esempi seguenti mostrano un gruppo di dati denominato orders_datagroup
definito in un file del 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
che persist_for
, riceverai un avviso di convalida e verrà utilizzato persist_with
.
Utilizzo di un gruppo di dati per attivare le distribuzioni pianificate
I gruppi di dati possono essere utilizzati anche per attivare la distribuzione di una dashboard o di un look. Con questa opzione, Looker invierà i dati al termine del gruppo di dati, in modo che i contenuti pianificati siano aggiornati.
Utilizzo del pannello Amministrazione per i gruppi di dati
Se disponi del ruolo di amministratore di Looker, puoi utilizzare la pagina Datagroups del pannello Admin per visualizzare i datagroup esistenti. Puoi visualizzare la connessione, il modello e lo stato attuale di ogni datagruppo e, se specificato in LookML, un'etichetta e una descrizione per ogni datagruppo. Puoi anche reimpostare la cache per un datagruppo, attivarlo o passare al relativo LookML.
Memorizzazione nella cache delle query con persist_for
Utilizza il parametro persist_for
a livello di modello o a livello di esplorazione per modificare l'intervallo di conservazione della cache predefinito di Looker di 1 ora. Puoi impostare intervalli di 0 minutes
o fino a 8760 hours
(1 anno) o più.
La definizione dei parametri persist_for
può essere più rapida e semplice, ma meno solida, rispetto alla definizione dei 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 datagroup in più modelli ed esplorazioni. Ciò significa che puoi aggiornare il
max_cache_age
di un gruppo di dati e il criterio di memorizzazione nella cache verrà aggiornato in ogni posizione in cui viene utilizzato il gruppo di dati. - Puoi cancellare tutta la cache associata a un gruppo di dati dalla pagina Gruppi di dati.