Memorizzazione nella cache dei metadati per tabelle esterne
Questo documento descrive come utilizzare la memorizzazione nella cache dei metadati (nota anche come indicizzazione dei metadati delle colonne) 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 i metadati relativi ai file in datastore esterni, ad esempio Cloud Storage. I seguenti tipi di tabelle BigLake supportano la memorizzazione nella cache dei metadati:
- Tabelle BigLake Amazon S3
- Tabelle BigLake di Cloud Storage
I metadati includono nomi di file, informazioni di partizionamento e metadati per file come i conteggi di righe. Puoi scegliere se abilitare la memorizzazione nella cache dei metadati in una tabella. Le query con un numero elevato di file e con filtri di partizione Hive traggono il massimo 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 dell'oggetto. 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 attivare la memorizzazione nella cache dei metadati in una tabella BigLake o degli oggetti quando crei la tabella. Per saperne di più sulla creazione di tabelle di oggetti, vedi Creare tabelle di oggetti. Per saperne di più sulla creazione di tabelle BigLake, consulta uno dei seguenti argomenti:
Impostazioni di memorizzazione nella cache dei metadati
Esistono due proprietà che controllano il comportamento di questa funzionalità:
- Massima obsolescenza specifica quando le query utilizzano i metadati memorizzati nella cache.
- La modalità cache dei metadati specifica la modalità di raccolta dei metadati.
Quando la memorizzazione nella cache dei metadati è abilitata, specifichi l'intervallo massimo di obsolescenza 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, l'operazione ripristina il recupero dei metadati dal datastore (Amazon S3 o Cloud Storage). Puoi specificare un intervallo di obsolescenza 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, in genere 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 attivarlo 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_CACHEper aggiornare la cache dei metadati in base alla pianificazione che preferisci. Per le tabelle BigLake, puoi aggiornare i metadati in modo selettivo fornendo le sottodirectory della directory dei dati della tabella. Questo approccio ti 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.
Gli aggiornamenti manuali e automatici della cache vengono eseguiti con
priorità di query INTERACTIVE.
Se scegli di utilizzare gli aggiornamenti automatici, ti consigliamo di creare una
prenotazione e poi un
assegnazione con un BACKGROUND tipo di job
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 impostare i valori dell'intervallo di obsolescenza e della modalità di memorizzazione nella cache dei metadati, valuta la loro interazione. Considera i seguenti esempi:
- Se la cache dei metadati di una tabella è impostata in modo da richiedere aggiornamenti manuali e l'intervallo di obsolescenza è impostato su 2 giorni, devi eseguire la procedura di sistema
BQ.REFRESH_EXTERNAL_METADATA_CACHEogni 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 obsolescenza è impostato su 30 minuti, alcune operazioni sulla tabella potrebbero leggere dal datastore se l'aggiornamento della cache dei metadati richiede più tempo rispetto alla finestra di 30-60 minuti.
Per saperne di più sull'impostazione delle opzioni di memorizzazione nella cache dei metadati per le tabelle BigLake, consulta Crea tabelle esterne BigLake Amazon S3 o Crea tabelle esterne BigLake per Cloud Storage.
Per saperne di più sull'impostazione delle opzioni di memorizzazione nella cache dei metadati per le tabelle degli oggetti, vedi Creare tabelle degli oggetti.
Recuperare 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;
Utilizzare 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 ereditata dalla tabella dal set di dati o dal progetto.
Se viene impostata una chiave CMEK predefinita per il progetto o il set di dati oppure se la chiave 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 chiavi CMEK create in BigQuery non vengono applicate ai file Cloud Storage utilizzati da BigLake e dalle tabelle degli oggetti. Per ottenere la crittografia CMEK end-to-end, configura le CMEK in Cloud Storage per questi file.
Ottenere informazioni sull'utilizzo della cache dei metadati da parte dei 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 guarda il campo MetadataCacheStatistics nella sezione JobStatistics2 della risorsa Job. Questo campo fornisce informazioni sulle tabelle con cache dei metadati abilitata utilizzate dalla query, se la cache dei metadati è stata utilizzata dalla query e, in caso contrario, il motivo.
Statistiche della tabella
Per le tabelle BigLake basate su file Parquet, le statistiche della tabella 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 conteggi di righe, dimensioni dei file fisiche e non compresse e 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 potenzialmente migliorare le prestazioni delle query per alcuni tipi di query. Ad esempio, un'ottimizzazione comune delle query è la propagazione dinamica dei vincoli, in cui l'ottimizzatore delle query deduce dinamicamente i predicati sulle tabelle dei fatti più grandi in un join dalle tabelle delle dimensioni più piccole. Sebbene questa ottimizzazione possa velocizzare le query utilizzando schemi di tabelle normalizzati, richiede statistiche accurate delle tabelle. Le statistiche delle tabelle raccolte dalla memorizzazione nella cache dei metadati consentono una maggiore ottimizzazione dei piani di query sia in BigQuery sia in Apache Spark.
Limitazioni
Si applicano le seguenti limitazioni alla cache dei metadati:
- Se esegui più aggiornamenti manuali simultanei, solo uno andrà a buon fine.
- La cache dei metadati scade dopo 7 giorni se non viene aggiornata.
- 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 questo problema, aggiorna manualmente la cache dei metadati. Se la cache dei metadati della tabella è impostata per l'aggiornamento automatico, devi impostare la modalità di aggiornamento della tabella su manuale, eseguire l'aggiornamento manuale, quindi 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à regionale, devi specificare esplicitamente questa località quando esegui la chiamata di 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, quindi fai clic su Impostazioni query.
Nella sezione Località, deseleziona la casella di controllo Selezione automatica della località, quindi specifica la regione di destinazione.
Fai clic su Salva.
Esegui la query contenente la chiamata alla procedura
BQ.REFRESH_EXTERNAL_METADATA_CACHEnella scheda Editor.
bq
Se esegui la query contenente la chiamata alla procedura
BQ.REFRESH_EXTERNAL_METADATA_CACHEutilizzandobq query, assicurati di specificare il flag--location.
Passaggi successivi
- Scopri di più sulla creazione di tabelle BigLake Cloud Storage con memorizzazione nella cache dei metadati.
- Scopri di più sulla creazione di tabelle BigLake Amazon S3 con memorizzazione nella cache dei metadati.
- Scopri di più sulla creazione di tabelle degli oggetti con memorizzazione nella cache dei metadati.
- Scopri di più sull'utilizzo delle viste materializzate nelle tabelle abilitate alla cache dei metadati BigLake.