Memorizzazione delle query nella cache

Looker riduce il carico sul database e migliora le prestazioni utilizzando i risultati memorizzati nella cache delle query SQL precedenti quando sono disponibili e quando questa funzione è consentita dal criterio di memorizzazione nella cache. Questa pagina descrive i criteri predefiniti di memorizzazione nella cache di Looker, insieme alle opzioni disponibili per modificare la durata dei risultati memorizzati nella cache sull'istanza di Looker.

In che modo Looker utilizza le query memorizzate nella cache

Per le query SQL, il meccanismo di memorizzazione nella cache in Looker funziona come segue:

  1. 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 la query in questione. I risultati memorizzati nella cache vengono utilizzati solo se tutti gli aspetti della query sono gli stessi, inclusi campi, filtri, parametri e limiti di righe.

  2. Se vengono trovati risultati memorizzati nella cache, Looker controlla il criterio di memorizzazione nella cache definito nel modello LookML per determinare se questi risultati sono scaduti. Se i risultati memorizzati nella cache non sono scaduti, per la query Looker utilizza i risultati memorizzati nella cache.

  3. 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 risultati della nuova query verranno quindi memorizzati nella cache.

Il criterio di conservazione della cache predefinito è di un'ora. La sezione successiva, Modifica dei criteri di conservazione della cache, descrive come ridurre o allungare questo periodo di tempo e descrive le opzioni per sincronizzare il criterio 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 è utilizzare un parametro datagroup a livello di modello. I gruppi di dati consentono di sincronizzare il criterio 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 Memorizzare nella cache le query e ricreare le 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 sostituisce l'intervallo predefinito di un'ora. Tuttavia, l'utilizzo di persist_for è meno efficace rispetto all'utilizzo dei gruppi di dati per alcuni motivi, come discusso nella sezione Memorizzazione nella cache delle query con permanenti_for.

Se per un'esplorazione o un modello è stato definito un gruppo di dati o un persist_for, il criterio di memorizzazione nella cache viene modificato come segue:

  • Prima della scadenza dell'intervallo persist_for o dell'intervallo max_cache_age del gruppo di dati: se la query viene eseguita nuovamente, Looker estrae i dati dalla cache.
  • Nel momento in cui scade l'intervallo persist_for o l'intervallo max_cache_age del gruppo di dati: Looker elimina i dati dalla cache.
  • Dopo la scadenza dell'intervallo persist_for o dell'intervallo max_cache_age del gruppo di dati: se la query viene eseguita di nuovo, Looker estrae i dati direttamente dal database e reimposta l'intervallo persist_for o max_cache_age.

Un punto fondamentale è che i dati vengono eliminati dalla cache allo scadere dell'intervallo persist_for o max_cache_age.

Se la cache raggiunge il limite di archiviazione, i dati vengono espulsi in base a un algoritmo LRU (meno utilizzati di recente), senza alcuna garanzia che i dati con intervalli di persist_for o max_cache_age scaduti vengano eliminati contemporaneamente.

Ridurre al minimo il tempo di permanenza dei dati nella cache

Looker scriverà 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 comunque essere archiviati per un massimo di 10 minuti. Tutti i dati dei clienti archiviati nella cache del disco vengono criptati utilizzando l'algoritmo Advanced Encryption Standard (AES).

Per ridurre al minimo la quantità di tempo per cui i dati vengono archiviati nella cache:

  • Per qualsiasi parametro persist_for (per un modello o un'esplorazione) o max_cache_age (per un gruppo di dati), imposta il valore su 0 minutes. Looker elimina la cache alla scadenza dell'intervallo persist_for o quando i dati raggiungono l'intervallo max_cache_age specificato nel gruppo di dati. Non è necessario impostare il parametro persist_for delle PDT su 0 minutes per ridurre al minimo la quantità di dati archiviati nella cache. le PDT vengono scritte nel database stesso e non nella cache).
  • Imposta il parametro suggest_persist_for su un intervallo piccolo. Il valore suggest_persist_for specifica per quanto tempo Looker deve conservare i suggerimenti per i filtri nella cache. I suggerimenti per i filtri sono basati su una query sui valori del campo filtrato. I risultati delle query vengono conservati nella cache in modo che Looker possa fornire rapidamente suggerimenti durante la digitazione 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 la quantità di tempo per cui i dati rimangono nella cache, imposta il valore suggest_persist_for su un valore inferiore, ad esempio 5 minutes.

Verificare se una query è stata restituita dalla cache

In una finestra Esplora, puoi determinare se una query è stata restituita dalla cache osservando 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 necessario 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 sui risultati uniti), seleziona l'opzione Svuota cache e aggiorna dal menu a forma di ingranaggio Esplora azioni.

Memorizzazione delle query nella cache e ricreazione delle PDT con i gruppi di dati

Utilizza i gruppi di dati per coordinare la pianificazione dell'ETL (estrazione, trasformazione e caricamento) del tuo database con il criterio di memorizzazione nella cache di Looker e la pianificazione di ricreazione delle PDT.

Puoi utilizzare un gruppo di dati per specificare il trigger di ricreazione delle PDT in base a quando vengono aggiunti nuovi dati al database. Successivamente puoi applicare lo stesso gruppo di dati all'esplorazione o al modello in modo che anche i risultati memorizzati nella cache scadano al momento della nuova creazione delle PDT.

In alternativa, puoi utilizzare un gruppo di dati per disaccoppiare il trigger di ricreazione delle PDT dalla durata massima della cache. Questo può essere utile se hai un'esplorazione basata su dati che vengono aggiornati molto di frequente e unita a una PDT che viene ricreata meno di frequente. In questo caso, potresti voler fare in modo che la cache delle query venga reimpostata più spesso di quanto non ricrei la PDT.

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 nuova creazione delle PDT diversi per esplorazioni e/o PDT diverse nel 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 viene attivato.
  • interval_trigger: specifica una pianificazione temporale per l'attivazione del gruppo di dati, ad esempio "24 hours".

Un gruppo di dati deve contenere almeno il parametro max_cache_age, sql_trigger o 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 svuotare la cache delle query ogni due ore, nel caso in cui eventuali esplorazioni uniscano le 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 alle esplorazioni e alle PDT:

Utilizzo di un gruppo di dati per specificare un trigger di nuova creazione per le PDT

Per definire un trigger per la ricreazione di PDT utilizzando i gruppi di dati, crea un parametro datagroup con il sottoparametro sql_trigger o interval_trigger. Quindi assegna il gruppo di dati alle singole PDT utilizzando il sottoparametro datagroup_trigger nella definizione di derived_table 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 il valore datagroup_trigger.

Di seguito è riportato un esempio di definizione 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 ulteriori informazioni sul funzionamento dei gruppi di dati 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. Dopo aver ricreato le PDT del gruppo di dati, Looker svuota la cache per le esplorazioni che utilizzano le PDT rigenerate 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 svuotare la cache delle query in base a una pianificazione specificata, oltre alla reimpostazione automatica della cache delle query che Looker esegue quando ricrei 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 la reimpostazione della cache delle query nelle esplorazioni, utilizza il parametro persist_with:

Gli esempi seguenti mostrano un gruppo di dati denominato orders_datagroup definito in un file 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 avviene per un po' di tempo, l'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, che significa che sarà il criterio di memorizzazione nella cache predefinito per tutte le esplorazioni del modello. Tuttavia, non vogliamo utilizzare il criterio di memorizzazione nella cache predefinito del modello per le esplorazioni customer_facts e customer_background, quindi 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 persist_with e persist_for sono specificati, riceverai un avviso di convalida e verrà utilizzato persist_with.

Utilizzo di un gruppo di dati per attivare pubblicazioni pianificate

I gruppi di dati possono essere utilizzati anche per attivare la pubblicazione di una dashboard o di un Look. Con questa opzione, Looker invia i dati al completamento del gruppo di dati, in modo che i contenuti pianificati siano aggiornati.

Utilizzare il 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 accedere al LookML del gruppo di dati.

Memorizzazione delle query nella cache con persist_for

Utilizza il parametro persist_for a livello di modello o a livello di esplorazione per modificare l'intervallo di conservazione di 1 ora predefinito della cache di Looker. Puoi impostare intervalli a partire da 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 robusta, rispetto alla definizione dei gruppi di dati. I gruppi di dati sono consigliati oltre 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 diversi modelli ed esplorazioni. Ciò significa che puoi aggiornare il max_cache_age di un gruppo di dati e questo aggiornerà il criterio di memorizzazione nella cache in ogni posizione in cui viene utilizzato il gruppo di dati.
  • Puoi svuotare tutta la cache associata a un gruppo di dati dalla pagina Gruppi di dati.