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:

  • Tabelle BigLake di Amazon S3
  • Tabelle BigLake di Cloud Storage
I metadati includono nomi di file, informazioni sulla partizione e metadati fisici di file come i conteggi delle righe. Puoi scegliere se attivare o meno per la memorizzazione nella cache dei metadati su 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 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 possono partizionare e potare 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, consulta 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à:

  • Anticipo massimo specifica quando le query utilizzano i metadati memorizzati nella cache.
  • La modalità della cache dei metadati specifica la modalità di raccolta dei metadati.

Se hai abilitato la memorizzazione nella cache dei metadati, specifichi l'intervallo massimo l'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'ora precedente. 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 in base a un sistema definito 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. 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 esegui più aggiornamenti manuali simultanei, ne verrà completato solo uno.

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, i job di aggiornamento non competono con le query degli utenti per le risorse e non rischiano di non riuscire se non sono disponibili risorse sufficienti.

Prima di impostarli, devi considerare in che modo 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à 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 di una tabella e imposti l'intervallo di inattività su 30 minuti, è possibile che alcune delle operazioni sulla tabella vengano lette dal datastore se l'aggiornamento della cache dei metadati richiede più tempo del solito intervallo di 30-60 minuti.

Visualizzare 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) utilizzata per la tabella a cui sono associati. Potrebbe trattarsi di un CMEK applicato direttamente alla tabella o di un CMEK ereditato 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 se 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, configura le chiavi 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 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 delle tabelle

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 delle tabelle raccolte includono informazioni sui file, come conteggi delle righe, dimensioni fisiche e non compresse dei file 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: 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 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

Alla cache dei metadati si applicano le seguenti limitazioni:

  • Se esegui più aggiornamenti manuali simultanei, ne verrà completato solo uno.
  • 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 della 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 la modalità di aggiornamento della tabella su manuale, eseguire l'aggiornamento manuale e impostare di nuovo la modalità di aggiornamento della tabella su automatico.
  • 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 della procedura BQ.REFRESH_EXTERNAL_METADATA_CACHE. Puoi farlo 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, quindi 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 alla procedura BQ.REFRESH_EXTERNAL_METADATA_CACHE nella scheda Editor.

    bq

    Se esegui la query contenente BQ.REFRESH_EXTERNAL_METADATA_CACHE alla procedura mediante bq query, assicurati per specificare Flag --location.

Passaggi successivi