Indicizzazione dei metadati per le tabelle BigQuery
Questo documento descrive l'indicizzazione dei metadati delle colonne in BigQuery e spiega come allocare risorse dedicate per migliorare l'aggiornamento dell'indice e le prestazioni delle query.
BigQuery indicizza automaticamente i metadati per le tabelle BigQuery superiori a 1 GiB. Questi metadati includono la posizione del file, le informazioni di partizionamento e gli attributi a livello di colonna, che BigQuery utilizza per ottimizzare e accelerare le query.
Per impostazione predefinita, l'indicizzazione dei metadati in BigQuery è un'operazione in background gratuita e non richiede alcuna azione da parte tua. Tuttavia, la freschezza dell'indice
dipende dalle risorse gratuite disponibili e non ha
obiettivi del livello di servizio (SLO) per le prestazioni. Se l'aggiornamento dell'indice è fondamentale per
il tuo caso d'uso, ti consigliamo di configurare una
prenotazione BACKGROUND,
che condivide le risorse tra i job di ottimizzazione in background.
Visualizzare l'ora di aggiornamento dell'indice dei metadati
Per visualizzare l'ora dell'ultimo aggiornamento dell'indice dei metadati di una tabella, esegui una query sulla
colonna LAST_METADATA_INDEX_REFRESH_TIME della
vista INFORMATION_SCHEMA.TABLE_STORAGE.
Per farlo:
Nella console Google Cloud , vai alla pagina BigQuery.
Nell'editor di query, inserisci la seguente istruzione:
SELECT project_id, project_number, table_name, last_metadata_index_refresh_time FROM [
PROJECT_ID.]region-REGION.INFORMATION_SCHEMA.TABLE_STORAGE;Sostituisci quanto segue:
PROJECT_ID: l'ID del tuo Google Cloud progetto. Se non specificato, viene utilizzato il progetto predefinito.REGION: la regione in cui si trova il progetto, ad esempioregion-us.
Fai clic su Esegui.
Visualizzare l'utilizzo dell'indice dei metadati colonna
Per verificare se l'indice dei metadati della colonna è stato utilizzato al termine di un job, controlla la proprietà
TableMetadataCacheUsage
della risorsa Job. Se il campo
unusedReason è vuoto (non compilato), è stato utilizzato l'indice
dei metadati della colonna. Se è compilato, il campo explanation
fornisce un motivo per cui l'indice dei metadati della colonna non è stato utilizzato.
Puoi anche visualizzare l'utilizzo dell'indice dei metadati delle colonne con il
campo metadata_cache_statistics nella
visualizzazione INFORMATION_SCHEMA.JOBS.
Ad esempio, quanto segue mostra l'utilizzo dell'indice dei metadati colonna per il job my-job:
SELECT metadata_cache_statistics FROM `region-US`.INFORMATION_SCHEMA.JOBS WHERE job_id = 'my-job';
Come altro esempio, il seguente mostra il numero di job che hanno utilizzato l'indice dei metadati colonna per la tabella my-table:
SELECT COUNT(*) FROM `region-US`.INFORMATION_SCHEMA.JOBS, UNNEST(metadata_cache_statistics.table_metadata_cache_usage) AS stats WHERE stats.table_reference.table_id='my-table' AND stats.table_reference.dataset_id='my-dataset' AND stats.table_reference.project_id='my-project' AND stats.unusedReason IS NULL;
Configurare risorse di indicizzazione dedicate
Per configurare le risorse per gli aggiornamenti dell'indicizzazione dei metadati nel tuo progetto, devi prima avere una prenotazione assegnata al tuo progetto. Per farlo:
Dopo aver configurato la prenotazione, seleziona uno dei seguenti metodi per assegnare slot al job di indicizzazione dei metadati. Per impostazione predefinita, gli slot allocati in questo modo vengono condivisi con altri job se sono inattivi. Per saperne di più, consulta la sezione Slot inattivi.
Console
Nella console Google Cloud , vai alla pagina Gestione della capacità.
Fai clic su Azioni prenotazione > Crea assegnazione.
Seleziona il progetto di prenotazione.
Imposta Tipo di job su Background.
Fai clic su Crea.
bq
Utilizza il comando bq mk.
bq mk \ --project_id=ADMIN_PROJECT_ID \ --location=LOCATION \ --reservation_assignment \ --reservation_id=RESERVATION_NAME \ --assignee_id=PROJECT_ID \ --job_type=BACKGROUND \ --assignee_type=PROJECT
Sostituisci quanto segue:
ADMIN_PROJECT_ID: l'ID progetto del progetto di amministrazione proprietario della risorsa di prenotazione.LOCATION: la posizione della prenotazione.RESERVATION_NAME: il nome della prenotazione.PROJECT_ID: l'ID progetto da assegnare a questa prenotazione.
SQL
Per assegnare una prenotazione a un progetto, utilizza l'istruzione DDL CREATE ASSIGNMENT.
Nella console Google Cloud , vai alla pagina BigQuery.
Nell'editor di query, inserisci la seguente istruzione:
Sostituisci quanto segue:CREATE ASSIGNMENT ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID OPTIONS ( assignee = 'projects/PROJECT_ID', job_type = 'BACKGROUND');
ADMIN_PROJECT_ID: l'ID progetto del progetto di amministrazione proprietario della risorsa di prenotazione.LOCATION: la posizione della prenotazione.RESERVATION_NAME: il nome della prenotazione.ASSIGNMENT_ID: l'ID dell'assegnazione. L'ID deve essere univoco per il progetto e la località, iniziare e terminare con una lettera minuscola o un numero e contenere solo lettere minuscole, numeri e trattini.PROJECT_ID: l'ID progetto contenente le tabelle. Questo progetto è assegnato alla prenotazione.
Fai clic su Esegui.
Visualizzare le informazioni sul job di indicizzazione
Dopo aver configurato i job di indicizzazione dedicati, puoi visualizzare le informazioni
sui job di indicizzazione con la
visualizzazione JOBS.
Il seguente esempio SQL mostra i cinque job di aggiornamento più recenti in
PROJECT_NAME.
SELECT * FROM region-us.INFORMATION_SCHEMA.JOBS WHERE project_id = 'PROJECT_NAME' AND SEARCH(job_id, '`metadata_cache_refresh`') ORDER BY creation_time DESC LIMIT 5;
Sostituisci PROJECT_NAME con il nome del progetto
che contiene i tuoi job di indicizzazione dei metadati.
Configura gli avvisi di indicizzazione dei metadati
La procedura di avviso di Cloud Monitoring ti avvisa quando le prestazioni di BigQuery non soddisfano i criteri definiti. Per saperne di più, consulta la Panoramica degli avvisi. Con l'indicizzazione dei metadati, puoi configurare avvisi per l'utilizzo e l'obsolescenza degli slot.
Avviso di utilizzo slot
Questo avviso ti informa quando la prenotazione in background supera una percentuale definita della sua allocazione. Il valore predefinito è 95%. Puoi configurare questo avviso per una prenotazione specifica o per ogni prenotazione in background. Quando viene attivato questo avviso, ti consigliamo di aumentare le dimensioni della prenotazione.
Per configurare questo avviso per ogni prenotazione in background:
- Configura un canale di notifica di monitoraggio se non l'hai ancora fatto.
Vai alla pagina Integrazioni.
Trova l'integrazione BigQuery e fai clic su Visualizza dettagli.
Nella scheda Avvisi, seleziona Utilizzo slot - Utilizzo slot cache metadati in background troppo elevato.
(Facoltativo) Per personalizzare ulteriormente questo avviso, fai clic su Mostra opzioni > Personalizza criterio di avviso.
In Configura le notifiche, seleziona il canale di notifica.
Fai clic su Crea.
Avviso di inattività
Questo avviso ti informa quando l'obsolescenza media dell'indice dei metadati della colonna aumenta troppo rispetto alla media esistente. La soglia predefinita è se la media su 4 ore è più del doppio della media precedente per più di 30 minuti. Quando viene attivato questo avviso, ti consigliamo di aumentare le dimensioni della prenotazione o di creare una prenotazione in background se non ne hai una.
Per configurare questo avviso:
- Configura un canale di notifica di monitoraggio se non l'hai ancora fatto.
Vai alla pagina Integrazioni.
Trova l'integrazione BigQuery e fai clic su Visualizza dettagli.
Nella scheda Avvisi, seleziona Mancato aggiornamento dell'indice dei metadati colonna - Aumento percentuale eccessivo.
(Facoltativo) Per personalizzare ulteriormente questo avviso, fai clic su Mostra opzioni > Personalizza criterio di avviso.
In Configura le notifiche, seleziona il canale di notifica.
Fai clic su Crea.
Limitazioni
I miglioramenti delle prestazioni delle query sui metadati si applicano solo alle istruzioni SELECT, INSERT e
CREATE TABLE AS SELECT. Le istruzioni DML (Data Manipulation Language)
non vedranno miglioramenti dall'indicizzazione dei metadati.
Passaggi successivi
- Scopri come visualizzare tutti i job nel tuo progetto con la visualizzazione
JOBS. - Scopri come visualizzare la capacità e l'utilizzo degli slot.