Memorizzazione nella cache dei metadati
Questo documento descrive come utilizzare la memorizzazione nella cache dei metadati per migliorare le query le prestazioni delle tabelle di oggetti e di alcuni tipi di tabelle BigLake.
Le tabelle di oggetti e alcuni tipi di tabelle BigLake possono memorizzare nella cache i metadati informazioni sui file contenuti in datastore esterni, ad esempio di archiviazione ideale in Cloud Storage. I seguenti tipi di tabelle BigLake per supportare 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 un'origine dati esterna per ottenere metadati degli oggetti. La lettura di questi dati aumenta 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 dall'origine dati esterna e può eseguire il partizionamento ed eliminare i file più rapidamente.
Puoi abilitare la memorizzazione nella cache dei metadati su una tabella di oggetti o BigLake quando crei la tabella. Per ulteriori informazioni sulla creazione di tabelle di oggetti, vedi Creare tabelle di oggetti Cloud Storage. Per ulteriori informazioni sulla creazione di tabelle BigLake, consulta uno dei i seguenti argomenti:Impostazioni di memorizzazione nella cache dei metadati
Esistono due proprietà che controllano questa funzionalità:
- Massima obsolescenza: 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 l'inattività dei metadati accettabile per le operazioni sulla tabella. Per Ad esempio, se specifichi un intervallo di 1 ora, verranno eseguite le operazioni utilizzare i metadati memorizzati nella cache se sono stati aggiornati nell'ultima ora. Se la copia cache I metadati sono più vecchi di questo valore, l'operazione torna al recupero da il 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 criterio definito dal sistema intervallo, solitamente compreso tra 30 e 60 minuti. Aggiornamento di Cache è un buon approccio se i file il datastore vengono aggiunti, eliminati o modificati a caso intervalli. Se devi controllare la tempistica dell'aggiornamento, ad esempio per per attivare l'aggiornamento al termine di un job di estrazione, trasformazione e caricamento, utilizzando aggiornamento manuale.
Per gli aggiornamenti manuali, esegui Sistema
BQ.REFRESH_EXTERNAL_METADATA_CACHE
procedura 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. Questo consente di evita metadati non necessari e l'elaborazione dei dati. Aggiornare manualmente la cache è un buon approccio se i file il datastore vengono aggiunti, eliminati o modificati a intervalli noti 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
Priorità delle query INTERACTIVE
.
Se scegli di utilizzare gli aggiornamenti automatici, ti consigliamo di creare una
reservation (prenotazione), quindi creare una
compito con un tipo di prestazione BACKGROUND
per il progetto che esegue i job di aggiornamento della cache dei metadati. In questo modo
aggiornare i job rispetto alla concorrenza con le query degli utenti per le risorse, e
potrebbero non riuscire se non sono disponibili risorse sufficienti.
È necessario considerare come l'intervallo di inattività e la modalità di memorizzazione nella cache dei metadati interagiscono prima di impostarli. Considera i seguenti esempi:
- Se aggiorni manualmente la cache dei metadati per una tabella e imposti
l'intervallo di inattività a 2 giorni, devi eseguire
BQ.REFRESH_EXTERNAL_METADATA_CACHE
procedura di sistema ogni 2 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 impostare l'intervallo di inattività su 30 minuti, è possibile che alcuni dei tuoi operazioni sulla tabella potrebbero leggere il datastore se l'aggiornamento della cache dei metadati richiede più tempo rispetto al solito 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
INFORMATION_SCHEMA.JOBS
visualizzazione,
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) per la tabella di cui i metadati memorizzati nella cache associati. Potrebbe trattarsi di una CMEK applicata direttamente alla tabella oppure 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 oppure se la CMEK esistente per il progetto o il set di dati viene modificato, ciò non influisce sulle tabelle o 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 I file di Cloud Storage utilizzati da BigLake e delle tabelle di oggetti. Per ottenere la crittografia CMEK end-to-end, configurare le CMEK in Cloud Storage per questi 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
Metodo jobs.get
per quel job
e osserveremo
Campo MetadataCacheStatistics
nel
Sezione JobStatistics2
della risorsa Job
. Questo campo fornisce informazioni
sui metadati
sono state utilizzate dalla query, indipendentemente dal fatto che la cache dei metadati
usato dalla query e, in caso negativo, il motivo.
Statistiche tabella
Per le tabelle BigLake basate su file Parquet, i valori le statistiche vengono raccolte quando la cache dei metadati viene aggiornata. Statistiche tabella la raccolta 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, dimensioni dei file fisici e non compressi e cardinalità delle colonne. Quando esegui su una tabella BigLake basata su Parquet, queste statistiche vengono forniti allo strumento di ottimizzazione delle query per una migliore pianificazione delle query e migliorare potenzialmente le prestazioni per alcuni tipi di query. Ad esempio: una comune ottimizzazione delle query è la propagazione dei vincoli dinamici, in cui lo strumento per ottimizzare le query deduce dinamicamente i predicati nelle tabelle dei fatti più grandi in un eseguire il join dalle tabelle delle dimensioni più piccole. Sebbene questa ottimizzazione possa velocizzare utilizzando schemi di tabella normalizzati, è necessaria una tabella accurata statistiche. Le statistiche della tabella raccolte dalla memorizzazione nella cache dei metadati consentono dei piani di query sia in BigQuery che con 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 automaticamente aggiornate e le successive query restituiscono i dati . Per evitare che ciò accada, aggiorna manualmente la cache dei metadati. Se la tabella la cache dei metadati è impostata per l'aggiornamento automatico, devi modificare il valore dalla modalità di aggiornamento a manuale, esegui l'aggiornamento manuale, quindi imposta il valore modalità di aggiornamento per tornare alla modalità automatica.
Se aggiorni manualmente la cache dei metadati e il set di dati di destinazione e il bucket Cloud Storage si trovano regionale, devi indicare esplicitamente specifica questa posizione quando esegui
BQ.REFRESH_EXTERNAL_METADATA_CACHE
di procedura. Puoi farlo in uno dei seguenti modi:Console
Vai alla pagina BigQuery.
Seleziona una scheda nell'Editor.
Clic
Altro e poi fai clic su Impostazioni query.Nella sezione Opzioni avanzate, deseleziona la casella di controllo Selezione automatica della località e specifica la regione target.
Fai clic su Salva.
Esegui la query contenente Chiamata di procedura
BQ.REFRESH_EXTERNAL_METADATA_CACHE
in quella scheda Editor.
bq
Se esegui la query contenente
BQ.REFRESH_EXTERNAL_METADATA_CACHE
alla procedura mediantebq query
, assicurati per specificare Flag--location
.
Passaggi successivi
- Scopri di più su creazione di tabelle BigLake di Cloud Storage con memorizzazione nella cache dei metadati.
- Scopri di più su creazione di tabelle Amazon S3 BigLake con memorizzazione nella cache dei metadati.
- Scopri di più su creazione di tabelle di oggetti con memorizzazione nella cache dei metadati.
- Informazioni su utilizzando le viste materializzate su tabelle abilitate alla cache dei metadati BigLake.