Utilizzare il runtime avanzato di BigQuery

Questo documento descrive come attivare e disattivare l'ambiente di runtime avanzato di BigQuery e come valutare gli effetti dell'ambiente di runtime avanzato sul rendimento delle query.

Ruoli e autorizzazioni

Per ottenere le autorizzazioni necessarie per specificare un'impostazione di configurazione, chiedi all'amministratore di concederti il ruolo IAM BigQuery Admin (roles/bigquery.admin) nel progetto o nell'organizzazione. Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Funzionalità

L'attivazione dell'ambiente di runtime avanzato in un progetto BigQuery attiva funzionalità nel processore di query che riducono la latenza delle query e il consumo di slot senza costi aggiuntivi.

Vettorializzazione avanzata

L'esecuzione vettoriale è un modello di elaborazione delle query che opera su colonne di dati in blocchi allineati alle dimensioni della cache della CPU e utilizza istruzioni SIMD (single instruction, multiple data). La vettorizzazione avanzata estende l'esecuzione vettorizzata delle query in BigQuery ai seguenti aspetti dell'elaborazione delle query:

  • Sfruttando codifiche dei dati specializzate all'interno del formato di archiviazione Capacitor, le operazioni di valutazione dei filtri possono essere eseguite sui dati codificati.
  • Le codifiche specializzate vengono propagate tramite il piano di query, il che consente di elaborare più dati mentre sono ancora codificati.
  • Implementando il folding delle espressioni per valutare le funzioni deterministiche e le espressioni costanti, BigQuery può semplificare i predicati complessi in valori costanti.

Ottimizzazioni delle query a breve termine

BigQuery in genere esegue le query in un ambiente distribuito utilizzando un livello intermedio di shuffle. Le ottimizzazioni delle query brevi identificano dinamicamente le query che possono essere eseguite come singola fase, riducendo la latenza e il consumo di slot. Le codifiche specializzate possono essere utilizzate in modo più efficace quando una query viene eseguita in una singola fase. Queste ottimizzazioni sono più efficaci se utilizzate con la modalità di creazione dei job facoltativa, che riduce al minimo la latenza di avvio, manutenzione e recupero dei risultati dei job.

L'idoneità all'ottimizzazione delle query brevi è dinamica e dipende dai seguenti fattori:

  • La dimensione prevista della scansione dei dati.
  • La quantità di spostamento dei dati richiesta.
  • La selettività dei filtri delle query.
  • Il tipo e il layout fisico dei dati nell'archivio.
  • La struttura generale della query.
  • Le statistiche storiche delle esecuzioni di query precedenti.

Attiva il runtime avanzato

Per attivare l'ambiente di runtime avanzato per il tuo progetto o la tua organizzazione, utilizza l'istruzione ALTER PROJECT o ALTER ORGANIZATION per modificare la configurazione predefinita. Nell'istruzione, imposta l'argomento query_runtime su 'advanced'. Ad esempio:

ALTER PROJECT PROJECT_NAME
SET OPTIONS (
  `region-LOCATION.query_runtime` = 'advanced'
);

Sostituisci quanto segue:

  • PROJECT_NAME: il nome del progetto
  • LOCATION: la posizione del progetto

Potrebbero essere necessari diversi minuti prima che la modifica diventi effettiva.

Una volta attivato il runtime avanzato, le query idonee nel progetto o nell'organizzazione utilizzano il runtime avanzato indipendentemente dall'utente che ha creato il job di query.

Disattivare il runtime avanzato

Per disattivare l'ambiente di runtime avanzato per il tuo progetto o la tua organizzazione, utilizza l'istruzione ALTER PROJECT o ALTER ORGANIZATION per modificare la configurazione predefinita. Nell'istruzione, imposta l'argomento query_runtime su NULL. Ad esempio:

ALTER PROJECT PROJECT_NAME
SET OPTIONS (
  `region-LOCATION.query_runtime` = NULL
);

Sostituisci quanto segue:

  • PROJECT_NAME: il nome del progetto
  • LOCATION: la posizione del progetto

Potrebbero essere necessari diversi minuti prima che la modifica diventi effettiva.

Valutare il rendimento delle query

Puoi utilizzare le visualizzazioni Esplora job amministrativi e INFORMATION_SCHEMA per valutare l'effetto dell'ambiente di runtime avanzato sul tempo di esecuzione delle query e sull'utilizzo degli slot.

Segui questi passaggi per valutare il rendimento delle query con e senza l'attivazione dell'ambiente di runtime avanzato:

  1. Nella console Trusted Cloud , vai alla pagina BigQuery.

    Vai a BigQuery

  2. Apri una nuova scheda nell'editor query.

  3. Disattiva l'utilizzo dei risultati delle query memorizzati nella cache per la scheda della query.

  4. Digita o copia le query di test nella scheda Query.

  5. Esegui le query di test alcune volte per stabilire le prestazioni di base. Dopo ogni esecuzione, determina le metriche sul rendimento della query nel seguente modo:

    1. Visualizza i dettagli di esecuzione della query in Esplora job amministrativi.
    2. Recupera i dati sul rendimento del lavoro dalla visualizzazione INFORMATION_SCHEMA.JOBS_BY_USER eseguendo la seguente query in una nuova scheda della query:

      SELECT
          job_id,
          end_time - start_time AS duration,
          total_slot_ms,
          query
      FROM
        `region-us`.INFORMATION_SCHEMA.JOBS_BY_USER
      WHERE
          creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY)
          AND job_type='QUERY'
          AND total_slot_ms IS NOT NULL
      ORDER BY
          creation_time DESC,
          query ASC
      LIMIT 1000;
      
  6. Attiva il runtime avanzato.

  7. Ripeti il passaggio 5.

  8. Confronta le metriche relative alla latenza delle query e all'utilizzo degli slot per le query di test prima e dopo l'attivazione dell'ambiente di runtime avanzato.