Memorizzazione nella cache dei metadati

Questo documento descrive come utilizzare la memorizzazione nella cache dei metadati per migliorare le prestazioni delle query sulle tabelle degli oggetti e su alcuni tipi di tabelle BigLake.

Le tabelle degli oggetti e alcuni tipi di tabelle BigLake possono memorizzare nella cache le informazioni sui metadati dei file in datastore esterni, ad esempio Cloud Storage. I seguenti tipi di tabelle BigLake supportano la memorizzazione nella cache dei metadati:

  • Tabelle BigLake di Amazon S3
  • Tabelle BigLake di Cloud Storage

I metadati includono nomi, informazioni sul partizionamento e metadati per i file, come il numero di righe. Puoi scegliere se attivare o meno la memorizzazione nella cache dei metadati su una tabella. Le query con un numero elevato di file e con filtri di partizione Hive traggono maggiore vantaggio dalla memorizzazione nella cache dei metadati.

Se non abiliti la memorizzazione nella cache dei metadati, le query sulla tabella devono leggere l'origine dati esterna per ottenere i metadati degli oggetti. La lettura di questi dati aumenta la latenza delle query; l'elenco di milioni di file dall'origine dati esterna può richiedere diversi minuti. Se attivi la memorizzazione nella cache dei metadati, le query possono evitare di elencare i file dell'origine dati esterna e possono partizionare ed eliminare i file più rapidamente.

Puoi abilitare la memorizzazione nella cache dei metadati su una tabella BigLake o di oggetti durante la creazione della tabella. Per ulteriori informazioni sulla creazione di tabelle di oggetti, consulta Creazione di tabelle di oggetti Cloud Storage. Per ulteriori informazioni sulla creazione di tabelle BigLake, consulta uno dei seguenti argomenti:

Impostazioni della memorizzazione nella cache dei metadati

Esistono due proprietà che controllano il comportamento di questa funzionalità:

  • L'inattività massima specifica quando le query utilizzano i metadati memorizzati nella cache.
  • La modalità cache dei metadati specifica il modo in cui vengono raccolti i metadati.

Se la memorizzazione nella cache dei metadati è abilitata, devi specificare l'intervallo massimo di inattività dei metadati accettabile per le operazioni sulla tabella. Ad esempio, se specifichi un intervallo di 1 ora, le operazioni sulla tabella utilizzano i metadati memorizzati nella cache se sono stati aggiornati nell'ultima ora. Se i metadati memorizzati nella cache sono più vecchi di questo periodo, l'operazione esegue invece il recupero dei metadati dal datastore (Amazon S3 o Cloud Storage). Puoi specificare un intervallo di inattività compreso tra 30 minuti e 7 giorni.

Puoi scegliere di aggiornare la cache automaticamente o manualmente:

  • Per gli aggiornamenti automatici, la cache viene aggiornata a un intervallo definito dal sistema, di solito tra 30 e 60 minuti. L'aggiornamento automatico della cache è un buon approccio se i file nel datastore vengono aggiunti, eliminati o modificati a intervalli casuali. Se hai bisogno di controllare la tempistica dell'aggiornamento, ad esempio per attivare l'aggiornamento al termine di un job di estrazione, trasformazione e caricamento, utilizza l'aggiornamento manuale.
  • Per gli aggiornamenti manuali, esegui la procedura di sistema BQ.REFRESH_EXTERNAL_METADATA_CACHE per aggiornare la cache dei metadati in base a qualsiasi pianificazione definita. Per le tabelle BigLake, puoi aggiornare i metadati in modo selettivo fornendo le sottodirectory della directory dei dati della tabella. Ciò ti consente di evitare l'elaborazione di metadati non necessaria. L'aggiornamento manuale della cache è un buon approccio se i file nel datastore vengono aggiunti, eliminati o modificati a intervalli noti, ad esempio come output di una pipeline.

Gli aggiornamenti manuali e automatici della cache vengono eseguiti con priorità delle query INTERACTIVE.

Se scegli di utilizzare gli aggiornamenti automatici, ti consigliamo di creare una prenotazione e poi un'assegnazione con un tipo di job BACKGROUND per il progetto che esegue i job di aggiornamento della cache dei metadati. Ciò impedisce ai job di aggiornamento di competere con le query degli utenti per le risorse e, potenzialmente, di non riuscire se non sono disponibili risorse sufficienti.

Prima di impostarli, devi considerare come interagiranno i valori dell'intervallo di inattività e della modalità di memorizzazione nella cache dei metadati. Considera i seguenti esempi:

  • Se la cache dei metadati di una tabella è impostata per richiedere aggiornamenti manuali e l'intervallo di inattività è impostato su 2 giorni, devi eseguire la procedura di sistema BQ.REFRESH_EXTERNAL_METADATA_CACHE ogni 2 giorni o meno se vuoi che le operazioni sulla tabella utilizzino i metadati memorizzati nella cache.
  • Se la cache dei metadati di una tabella è impostata per l'aggiornamento automatico e l'intervallo di inattività è impostato su 30 minuti, alcune operazioni sulla tabella potrebbero essere lette dal datastore se l'aggiornamento della cache dei metadati richiede il lato più lungo della normale finestra di 30-60 minuti.

Per ulteriori informazioni sull'impostazione delle opzioni di memorizzazione nella cache dei metadati per le tabelle BigLake, consulta Creare tabelle BigLake di Amazon S3 o Creare tabelle BigLake di Cloud Storage.

Per ulteriori informazioni sull'impostazione delle opzioni di memorizzazione nella cache dei metadati per le tabelle di oggetti, consulta Creazione di tabelle di oggetti.

Ottieni informazioni sui job di aggiornamento della cache dei metadati

Per trovare informazioni sui job di aggiornamento della cache dei metadati, esegui una query sulla vista INFORMATION_SCHEMA.JOBS, come mostrato nell'esempio seguente:

SELECT *
FROM `region-us.INFORMATION_SCHEMA.JOBS`
WHERE job_id LIKE '%metadata_cache_refresh%'
AND creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 6 HOUR)
ORDER BY start_time DESC
LIMIT 10;

Utilizzo di chiavi di crittografia gestite dal cliente con metadati memorizzati nella cache

I metadati memorizzati nella cache sono protetti dalla chiave di crittografia gestita dal cliente (CMEK) utilizzata per la tabella a cui sono associati i metadati memorizzati nella cache. Potrebbe essere una CMEK applicata direttamente alla tabella o una CMEK che la tabella eredita dal set di dati o dal progetto.

Se è impostata una CMEK predefinita per il progetto o il set di dati o se la CMEK esistente per il progetto o il set di dati viene modificata, ciò non influisce sulle tabelle esistenti o sui relativi metadati memorizzati nella cache. Devi modificare la chiave della tabella per applicare la nuova chiave sia alla tabella sia ai relativi metadati memorizzati nella cache.

Le CMEK create in BigQuery non si applicano ai file Cloud Storage utilizzati dalle tabelle BigLake e degli oggetti. Per ottenere la crittografia CMEK end-to-end, configura le CMEK in Cloud Storage per i file.

Visualizza informazioni sull'utilizzo della cache dei metadati per job di query

Per ottenere informazioni sull'utilizzo della cache dei metadati per un job di query, chiama il metodo jobs.get per quel job e controlla il campo MetadataCacheStatistics nella sezioneJobStatistics2 della risorsa Job. Questo campo fornisce informazioni su quali tabelle dei metadati abilitate per la cache sono state utilizzate dalla query, se la cache dei metadati è stata utilizzata dalla query e, in caso contrario, il motivo della mancata visualizzazione.

Statistiche della tabella

Per le tabelle BigLake basate su file Parquet, le statistiche delle tabelle vengono raccolte quando viene aggiornata la cache dei metadati. La raccolta delle statistiche delle tabelle avviene durante gli aggiornamenti automatici e manuali e le statistiche vengono conservate per lo stesso periodo della cache dei metadati.

Le statistiche delle tabelle raccolte includono informazioni sui file come il numero di righe, le dimensioni fisiche e non compresse dei file e la cardinalità delle colonne. Quando esegui una query su una tabella BigLake basata su Parquet, queste statistiche vengono fornite allo strumento di ottimizzazione delle query per consentire una migliore pianificazione delle query e migliorare potenzialmente le prestazioni delle query per alcuni tipi di query. Ad esempio, un'ottimizzazione comune delle query è la propagazione dinamica di vincoli, in cui lo strumento di ottimizzazione delle query deduce dinamicamente i predicati nelle tabelle dei fatti più grandi in una join dalle tabelle delle dimensioni più piccole. Sebbene questa ottimizzazione possa accelerare le query utilizzando schemi di tabelle normalizzate, richiede statistiche accurate. Le statistiche delle tabelle raccolte dalla memorizzazione nella cache dei metadati consentono una maggiore ottimizzazione dei piani di query sia in BigQuery che in Apache Spark.

Limitazioni

Alla cache dei metadati si applicano le seguenti limitazioni:

  • Se emetti più aggiornamenti manuali contemporanei, solo uno avrà esito positivo.
  • Se non viene aggiornata, la cache dei metadati scade dopo sette giorni.
  • Se aggiorni l'URI di origine di una tabella, la cache dei metadati non viene aggiornata automaticamente e le query successive restituiscono i dati dalla cache obsoleta. Per evitare che ciò accada, aggiorna manualmente la cache dei metadati. Se la cache dei metadati della tabella è impostata per l'aggiornamento automatico, devi impostare l'aggiornamento automatico della tabella, eseguire l'aggiornamento manuale e poi impostare di nuovo la modalità di aggiornamento della tabella su automatica.
  • Se aggiorni manualmente la cache dei metadati e il set di dati di destinazione e il bucket Cloud Storage si trovano in una località a livello di regione, devi specificare esplicitamente questa località quando esegui la chiamata alla procedura BQ.REFRESH_EXTERNAL_METADATA_CACHE. Puoi eseguire questa operazione in uno dei seguenti modi:

    Console

    1. Vai alla pagina BigQuery.

      Vai a BigQuery

    2. Seleziona una scheda nell'Editor.

    3. Fai clic su Altro e poi su Impostazioni query.

    4. Nella sezione Opzioni avanzate, deseleziona la casella di controllo Selezione automatica della località e specifica la regione di destinazione.

    5. Fai clic su Salva.

    6. Esegui la query contenente la chiamata della procedura BQ.REFRESH_EXTERNAL_METADATA_CACHE in quella scheda Editor.

    bq

    Se esegui la query contenente la chiamata della procedura BQ.REFRESH_EXTERNAL_METADATA_CACHE utilizzando bq query, assicurati di specificare il flag --location.

Passaggi successivi