Memorizzazione nella cache dei metadati
Questo documento descrive come utilizzare la memorizzazione nella cache dei metadati per migliorare le prestazioni delle query sulle tabelle di oggetti e su alcuni tipi di tabelle BigLake.
Le tabelle degli oggetti e alcuni tipi di tabelle BigLake possono memorizzare nella cache informazioni sui metadati relativi ai file contenuti in datastore esterni, ad esempio Cloud Storage. I seguenti tipi di tabelle BigLake supportano la memorizzazione nella cache dei metadati:
- Tavoli Amazon S3 BigLake
- Tabelle BigLake di Cloud Storage
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 abiliti la memorizzazione nella cache dei metadati, le query possono evitare di elencare i file dall'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 quando crei la tabella. Per ulteriori informazioni sulla creazione di tabelle di oggetti, consulta Creare tabelle di oggetti Cloud Storage. Per ulteriori informazioni sulla creazione di tabelle BigLake, vedere uno dei seguenti argomenti:Impostazioni di memorizzazione nella cache dei metadati
Esistono due proprietà che controllano questa funzionalità:
- Massima inattività: specifica quando le query utilizzano i metadati memorizzati nella cache.
- La modalità cache dei metadati specifica in che modo vengono raccolti i metadati.
Se hai abilitato la memorizzazione nella cache dei metadati, specifichi l'intervallo massimo di inattività dei metadati accettabile per le operazioni sulla tabella. Ad esempio, se specifichi un intervallo di 1 ora, le operazioni eseguite sulla tabella utilizzano i metadati memorizzati nella cache se sono stati aggiornati nell'ultima ora. Se i metadati memorizzati nella cache sono più vecchi, l'operazione utilizza 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, solitamente compreso 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 devi 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, devi eseguire la procedura di sistema di
BQ.REFRESH_EXTERNAL_METADATA_CACHE
per aggiornare la cache dei metadati in base a una pianificazione che soddisfi i tuoi requisiti. Per le tabelle BigLake, puoi aggiornare i metadati in modo selettivo fornendo le sottodirectory della directory dei dati della tabella. Ciò consente di evitare l'elaborazione non necessaria dei metadati. 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.Se emetti più aggiornamenti manuali simultanei, solo uno avrà esito positivo.
Se non viene aggiornata, la cache dei metadati scade dopo 7 giorni.
Sia gli aggiornamenti manuali che quelli automatici della cache vengono eseguiti con la priorità delle query INTERACTIVE
.
Se scegli di utilizzare gli aggiornamenti automatici, ti consigliamo di creare una
prenotazione, quindi creare un
assegnazione con un tipo di job BACKGROUND
per il progetto che esegue i job di aggiornamento della cache dei metadati. In questo modo, i job di aggiornamento non competono con le query degli utenti per le risorse e potrebbero 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 aggiorni manualmente la cache dei metadati per una tabella e imposti l'intervallo di inattività su due giorni, devi eseguire la procedura di sistema
BQ.REFRESH_EXTERNAL_METADATA_CACHE
ogni due giorni o meno se vuoi che le operazioni sulla tabella utilizzino i metadati memorizzati nella cache. - Se aggiorni automaticamente la cache dei metadati per una tabella e imposti l'intervallo di inattività su 30 minuti, è possibile che alcune operazioni sulla tabella vengano lette dal datastore se l'aggiornamento della cache dei metadati dura più a lungo della consueta finestra di 30-60 minuti.
Ottieni informazioni sui job di aggiornamento della cache dei metadati
Per trovare informazioni sui job di aggiornamento dei metadati, esegui una query sulla vista INFORMATION_SCHEMA.JOBS
, come mostrato nell'esempio seguente:
SELECT * FROM `region-us.INFORMATION_SCHEMA.JOBS_BY_PROJECT` WHERE job_id LIKE '%metadata_cache_refresh%' AND creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 6 HOUR) ORDER BY start_time DESC LIMIT 10;
Utilizza le chiavi di crittografia gestite dal cliente con i 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 trattarsi di una CMEK applicata direttamente alla tabella o di una CMEK che la tabella eredita dal set di dati o dal progetto.
Se per il progetto o per il set di dati è impostata una CMEK predefinita o se viene modificata la CMEK esistente per il progetto o il set di dati, questo non influirà sulle tabelle esistenti o sui 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 da BigLake e dalle tabelle di oggetti. Per ottenere la crittografia CMEK end-to-end, configura le CMEK in Cloud Storage per i file.
Ottieni 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 sezione JobStatistics2
della risorsa Job
. Questo campo fornisce informazioni su quali tabelle di 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.
Statistiche tabella
Per le tabelle BigLake basate su file Parquet, le statistiche delle tabelle vengono raccolte quando la cache dei metadati viene aggiornata. 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 della tabella raccolte includono informazioni sui file come i conteggi delle righe, le dimensioni dei file fisici e non compressi e la cardinalità delle colonne. Quando esegui una query su una tabella BigLake basata su Parquet, queste statistiche vengono fornite all'ottimizzatore delle query per consentire una migliore pianificazione delle query e migliorare potenzialmente le prestazioni delle query per alcuni tipi di query. Ad esempio, una comune ottimizzazione delle query è la propagazione dei vincoli dinamici, in cui l'ottimizzatore delle query deduce dinamicamente i predicati sulle tabelle dei fatti più grandi in un join dalle tabelle di dimensioni più piccole. Sebbene questa ottimizzazione possa accelerare le query utilizzando schemi di tabella normalizzati, richiede statistiche delle tabelle accurate. Le statistiche della tabella 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 simultanei, solo uno avrà esito positivo.
- Se non viene aggiornata, la cache dei metadati scade dopo 7 giorni.
- Se aggiorni l'URI di origine di una tabella, la cache dei metadati non viene aggiornata automaticamente e le query successive restituiscono 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 modificare la modalità di aggiornamento della tabella in manuale, eseguire l'aggiornamento manuale, quindi reimpostare la modalità di aggiornamento automatica della tabella.
Se stai aggiornando manualmente la cache dei metadati e il set di dati di destinazione e il bucket Cloud Storage si trovano in una località regionale, devi specificare esplicitamente questa località quando esegui la chiamata alla procedura
BQ.REFRESH_EXTERNAL_METADATA_CACHE
. Puoi farlo in uno dei seguenti modi:Console
Vai alla pagina BigQuery.
Seleziona una scheda nell'Editor.
Fai clic su
Altro e poi su Impostazioni query.Nella sezione Opzioni avanzate, deseleziona la casella di controllo Selezione automatica della località e specifica la regione di destinazione.
Fai clic su Salva.
Esegui la query contenente la chiamata alla procedura
BQ.REFRESH_EXTERNAL_METADATA_CACHE
in quella scheda Editor.
bq
Se esegui la query contenente la chiamata di procedura
BQ.REFRESH_EXTERNAL_METADATA_CACHE
utilizzandobq query
, assicurati di specificare il flag--location
.
Passaggi successivi
- Scopri di più sulla creazione di tabelle BigLake di Cloud Storage con memorizzazione nella cache di metadati.
- Scopri di più sulla creazione di tabelle Amazon S3 BigLake con memorizzazione nella cache di metadati.
- Scopri di più sulla creazione di tabelle di oggetti con memorizzazione nella cache di metadati.
- Scopri di più sull'utilizzo delle viste materializzate sulle tabelle abilitate per la cache dei metadati BigLake.