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 la freschezza dell'indice e il rendimento delle query.

BigQuery indicizza automaticamente i metadati per le tabelle BigQuery che superano 1 GiB. Questi metadati includono la posizione dei 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 senza costi e non richiede alcuna azione da parte tua. Tuttavia, la freschezza dell'indice dipende dalle risorse senza costi disponibili e non ha obiettivi del livello di servizio (SLO) di rendimento. Se la freschezza dell'indice è fondamentale per il tuo caso d'uso, ti consigliamo di configurare una BACKGROUND prenotazione, che condivide le risorse tra i job di ottimizzazione in background.

Visualizzare l'ora di aggiornamento dell'indice dei metadati

Per visualizzare l'ultima ora di aggiornamento dell'indice dei metadati di una tabella, esegui una query sulla LAST_METADATA_INDEX_REFRESH_TIME colonna della INFORMATION_SCHEMA.TABLE_STORAGE vista. Per farlo:

  1. Nella Cloud de Confiance console, vai alla pagina BigQuery.

    Vai a BigQuery

  2. 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 Cloud de Confiance by S3NS progetto. Se non viene specificato, viene utilizzato il progetto predefinito.
    • REGION: la regione in cui si trova il progetto, ad esempio region-us.
  3. Fai clic su Esegui.

Visualizzare l'utilizzo dell'indice dei metadati delle colonne

Per verificare se l'indice dei metadati delle colonne è stato utilizzato al termine di un job, controlla la TableMetadataCacheUsage proprietà della risorsa Job. Se il campo unusedReason è vuoto (non compilato), l'indice dei metadati delle colonne è stato utilizzato. Se è compilato, il campo explanation associato fornisce un motivo per cui l'indice dei metadati delle colonne non è stato utilizzato.

Puoi anche visualizzare l'utilizzo dell'indice dei metadati delle colonne con il metadata_cache_statistics campo nella INFORMATION_SCHEMA.JOBS vista.

Ad esempio, la seguente query mostra 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';

Come altro esempio, la seguente query mostra 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;

Configurare risorse di indicizzazione dedicate

Per configurare le risorse per gli aggiornamenti dell'indicizzazione dei metadati nel tuo progetto, devi prima assegnare una prenotazione al progetto. Per farlo:

  1. Crea una prenotazione BACKGROUND.
  2. Assegna il progetto alla prenotazione.

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 ulteriori informazioni, consulta Slot inattivi.

Console

  1. Nella Cloud de Confiance console, vai alla pagina Gestione della capacità.

    Vai a Gestione della capacità

  2. Fai clic su Azioni di prenotazione > Crea assegnazione.

  3. Seleziona il progetto di prenotazione.

  4. Imposta Tipo di job su Sfondo.

  5. Fai clic su Crea.

bq

Utilizza il bq mk comando.

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' CREATE ASSIGNMENT istruzione DDL.

  1. Nella Cloud de Confiance console, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nell'editor di query, inserisci la seguente istruzione:

    CREATE ASSIGNMENT
    ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID
    OPTIONS (
      assignee = 'projects/PROJECT_ID',
      job_type = 'BACKGROUND');
    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.
    • 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.
  3. Fai clic su Esegui.

Visualizzare le informazioni sui job di indicizzazione

Dopo aver configurato i job di indicizzazione dedicati, puoi visualizzare le informazioni sui job di indicizzazione con la JOBS vista. Il seguente esempio SQL mostra gli ultimi cinque job di aggiornamento 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.

Configurare gli avvisi di indicizzazione dei metadati

La procedura di avviso di Cloud Monitoring ti invia una notifica quando il rendimento di BigQuery non soddisfa i criteri definiti. Per ulteriori informazioni, consulta la Panoramica degli avvisi. Con l'indicizzazione dei metadati, puoi configurare gli avvisi per l'utilizzo degli slot e l'obsolescenza.

Avviso di utilizzo degli slot

Questo avviso ti invia una notifica 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:

  1. Configura un canale di notifica di Monitoring, se non l'hai già fatto.
  2. Vai alla pagina Integrazioni.

    Vai a Integrazioni

  3. Trova l'integrazione BigQuery e fai clic su Visualizza dettagli.

  4. Nella scheda Avvisi, seleziona Utilizzo slot - Utilizzo slot della cache dei metadati in background troppo elevato.

  5. (Facoltativo) Per personalizzare ulteriormente questo avviso, fai clic su Mostra opzioni > Personalizza criterio di avviso.

  6. In Configura le notifiche, seleziona il canale di notifica.

  7. Fai clic su Crea.

Avviso di obsolescenza

Questo avviso ti invia una notifica 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 è più del doppio della media precedente per più di 30 minuti. Quando questo avviso viene attivato, ti consigliamo di aumentare le dimensioni della prenotazione o di creare una prenotazione in background se non ne hai una.

Per configurare questo avviso:

  1. Configura un canale di notifica di Monitoring, se non l'hai già fatto.
  2. Vai alla pagina Integrazioni.

    Vai a Integrazioni

  3. Trova l'integrazione BigQuery e fai clic su Visualizza dettagli.

  4. Nella scheda Avvisi, seleziona Obsolescenza dell'indice dei metadati delle colonne - Aumento percentuale eccessivo.

  5. (Facoltativo) Per personalizzare ulteriormente questo avviso, fai clic su Mostra opzioni > Personalizza criterio di avviso.

  6. In Configura le notifiche, seleziona il canale di notifica.

  7. Fai clic su Crea.

Limitazioni

I miglioramenti del rendimento delle query dei 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