Indicizzazione dei metadati per le tabelle BigQuery
BigQuery indicizza automaticamente i metadati delle colonne per le tabelle BigQuery di dimensioni superiori a 1 GiB e utilizza l'indice per accelerare le query. I metadati includono le posizioni dei file, le informazioni di partizionamento e gli attributi a livello di colonna. Per impostazione predefinita, l'indicizzazione è un'operazione in background senza costi, ma l'aggiornamento dell'indice dipende dalle risorse libere disponibili e non ha obiettivi del livello di servizio (SLO) relativi alle prestazioni.
Se l'aggiornamento dell'indice è fondamentale per il tuo workload, puoi allocare risorse dedicate configurando una prenotazione BACKGROUND.
Questo documento descrive come monitorare l'aggiornamento e l'utilizzo degli indici, configurare risorse di indicizzazione dedicate e configurare gli avvisi di indicizzazione.
Visualizza il tempo 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, segui questi passaggi:
Nella console Cloud de Confiance , 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 progetto Cloud de Confiance by S3NS . Se non specificato, viene utilizzato il progetto predefinito.REGION: la regione in cui si trova il progetto, ad esempioregion-us.
Fai clic su Esegui.
Visualizza l'utilizzo dell'indice dei metadati delle colonne
Per verificare se l'indice dei metadati della colonna è stato utilizzato dopo il completamento 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 associato 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 vista INFORMATION_SCHEMA.JOBS.
Ad esempio, di seguito viene mostrato l'utilizzo dell'indice dei metadati delle colonne per il job my-job:
SELECT metadata_cache_statistics FROM `region-US`.INFORMATION_SCHEMA.JOBS WHERE job_id = 'my-job';
Un altro esempio: di seguito viene mostrato il numero di job che hanno utilizzato l'indice dei metadati delle colonne 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;
Configura 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 progetto. Per farlo, segui questi passaggi:
- Crea una prenotazione
BACKGROUND. Una prenotazioneBACKGROUNDcondivide le risorse tra i job di ottimizzazione in background. - Assegna il progetto alla prenotazione.
Dopo aver configurato la prenotazione, seleziona uno dei seguenti metodi per assegnare gli 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 Slot inattivi.
Console
Nella console Cloud de Confiance , vai alla pagina Workload Management.
Fai clic su Azioni di 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 località 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 Cloud de Confiance , 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 località 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.
Visualizza le informazioni sul job di indicizzazione
Dopo aver configurato i job di indicizzazione dedicati, puoi visualizzare le informazioni sui job di indicizzazione con la vista JOBS.
L'esempio SQL seguente 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 contenente i job di indicizzazione dei metadati.
Configura gli avvisi di indicizzazione dei metadati
Il processo di avviso di Cloud Monitoring ti invia una notifica quando le prestazioni di BigQuery non soddisfano i criteri definiti. Per ulteriori informazioni, consulta la Panoramica degli avvisi. Con l'indicizzazione dei metadati, puoi configurare avvisi per l'utilizzo e l'obsolescenza degli slot.
Avviso di utilizzo degli slot
Questo avviso ti avvisa 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 questo avviso viene attivato, ti consigliamo di aumentare le dimensioni della prenotazione.
Per configurare questo avviso per ogni prenotazione in background, segui questi passaggi:
- Se non l'hai ancora fatto, configura un canale di notifica di Monitoring.
Vai alla pagina Integrazioni.
Trova l'integrazione di BigQuery e fai clic su Visualizza dettagli.
Nella scheda Avvisi, seleziona Utilizzo slot - Utilizzo slot cache dei metadati in background troppo elevato.
(Facoltativo) Per personalizzare ulteriormente questo avviso personalizzato, fai clic su Mostra opzioni > Personalizza policy di avviso.
In Configura le notifiche, seleziona il canale di notifica.
Fai clic su Crea.
Avviso di inattività
Questo avviso ti avvisa quando l'obsolescenza media dell'indice dei metadati delle colonne aumenta troppo rispetto alla media esistente. La soglia predefinita è se la media su 4 ore è superiore al 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, segui questi passaggi:
- Se non l'hai ancora fatto, configura un canale di notifica di Monitoring.
Vai alla pagina Integrazioni.
Trova l'integrazione di 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 personalizzato, fai clic su Mostra opzioni > Personalizza policy di avviso.
In Configura le notifiche, seleziona il canale di notifica.
Fai clic su Crea.
Considerazioni sulle prestazioni
Sebbene BigQuery esegua automaticamente la potatura dei dati utilizzando il partizionamento e il clustering, l'indicizzazione dei metadati può ottimizzare ulteriormente le query eseguendo la potatura dei dati in base alle colonne non utilizzate per il partizionamento o il clustering. L'efficacia di questa eliminazione aumenta quando esiste una dipendenza di ordinamento tra la colonna di filtro e le colonne di partizionamento o clustering della tabella. In questi casi, potresti osservare un numero di byte scansionati inferiore al previsto, anche quando filtri in base a colonne che non fanno parte esplicitamente della configurazione di clustering della tabella. Se una tabella è solo partizionata, ma non raggruppata, l'efficacia della riduzione è limitata per le query on demand e potresti non notare una riduzione dei byte scansionati.
Limitazioni
I miglioramenti delle prestazioni delle query dei metadati si applicano solo alle istruzioni SELECT, INSERT e
CREATE TABLE AS SELECT. Le istruzioni DML (Data Manipulation Language) non trarranno vantaggio dall'indicizzazione dei metadati.
Passaggi successivi
- Scopri come visualizzare tutti i job nel tuo progetto con la vista
JOBS. - Scopri come visualizzare la capacità e l'utilizzo degli slot.