Introduzione all'ottimizzazione delle prestazioni delle query

Questo documento fornisce una panoramica delle tecniche di ottimizzazione che possono migliorare. le prestazioni delle query in BigQuery. In generale, le query che funzionano meno o migliorare il rendimento. Eseguono i processi più velocemente e consumano meno risorse, il che può comportare costi inferiori e meno errori.

Prestazioni delle query

La valutazione delle prestazioni delle query in BigQuery coinvolge diversi fattori:

Per valutare query specifiche o verificare se si verifica una contesa delle risorse, puoi utilizzare Cloud Monitoring o i grafici delle risorse amministrative di BigQuery per monitorare il consumo di risorse da parte dei job BigQuery nel tempo. Se identifichi una query lenta o che richiede molte risorse, puoi ottimizzare le prestazioni su questa query.

Alcuni pattern di query, in particolare quelli generati dagli strumenti di business intelligence, può essere accelerata utilizzando BigQuery BI Engine. BI Engine è un servizio di analisi in-memory rapido che accelera molte query SQL in BigQuery memorizzando in modo intelligente nella cache i dati che utilizzi più di frequente. BI Engine è integrato in BigQuery, il che significa che spesso puoi ottenere un rendimento migliore senza alcuna modifica alle query.

Come per qualsiasi sistema, l'ottimizzazione per il rendimento a volte comporta dei compromessi. Ad esempio, l'utilizzo della sintassi SQL avanzata a volte può introdurre complessità e ridurre il numero di query la comprensibilità anche per chi non è esperto di SQL. Dedicare tempo a micro-ottimizzazioni per carichi di lavoro non critici potrebbe anche distogliere le risorse dalla creazione di nuove funzionalità per le tue applicazioni o dall'identificazione di ottimizzazioni più importanti. Per aiutarti a ottenere il più alto ritorno possibile sull'investimento, ti consigliamo di concentrare le ottimizzazioni sui carichi di lavoro più importanti per le pipeline di analisi dei dati.

Ottimizzazione di capacità e contemporaneità

BigQuery offre due modelli di prezzi per le query: i prezzi on demand e in base alla capacità i prezzi. Il modello on demand offre un pool condiviso di capacità e i prezzi in base alla quantità di dati elaborati da ogni query che esegui.

Il modello basato sulla capacità è consigliata se vuoi definire un budget con una spesa mensile costante o se hai bisogno di più capacità rispetto a quella disponibile con il modello on demand. Quando utilizzi i prezzi basati sulla capacità, assegni una capacità di elaborazione delle query dedicata misurata in slot. Il costo di tutti i byte elaborati è incluso nel prezzo basato sulla capacità. Oltre agli impegni di slot fissi, puoi utilizzare gli slot con scalabilità automatica, che forniscono capacità dinamica basata sul carico di lavoro delle query.

Le prestazioni delle query eseguite ripetutamente sugli stessi dati possono variare e la variazione è generalmente maggiore per le query che utilizzano slot on demand rispetto ma per le query che usano le prenotazioni di slot.

Durante l'elaborazione delle query SQL, BigQuery suddivide la capacità di calcolo richiesta per eseguire ogni fase di una query in slot. BigQuery determina automaticamente il numero di query che possono essere eseguite contemporaneamente come segue:

  • Modello on demand: numero di slot disponibili nel progetto
  • Modello basato sulla capacità: numero di slot disponibili nella prenotazione

Le query che richiedono più slot rispetto a quelle disponibili vengono in coda finché le risorse di elaborazione non diventano disponibili. Dopo l'inizio dell'esecuzione di una query, BigQuery calcola il numero di slot utilizzati da ogni fase della query in base alle dimensioni e alla complessità della fase e al numero di slot disponibili. BigQuery utilizza una tecnica chiamata pianificazione equa per assicurarti che ogni query abbia una capacità sufficiente per l'avanzamento.

L'accesso a più slot non comporta sempre un aumento delle prestazioni di una query. Tuttavia, un pool di slot più grande può migliorare le prestazioni di query di grandi dimensioni o complesse e di carichi di lavoro ad alta contemporaneità. Per migliorare il rendimento delle query, puoi modificare le prenotazioni degli slot o impostare un limite più elevato per la scalabilità automatica degli slot.

Piano di query e sequenza temporale

BigQuery genera un piano di query ogni volta che esegui una query. Comprendere questo piano è fondamentale per un'efficace ottimizzazione delle query. Il piano di query include statistiche di esecuzione come i byte letti e il tempo dello slot impiegato. Il piano di query include anche i dettagli sulle diverse fasi di esecuzione, che possono aiutarti a diagnosticare e migliorare le prestazioni delle query. Il grafico di esecuzione della query Fornisce un'interfaccia grafica per visualizzare il piano di query e diagnosticare i problemi di prestazioni delle query.

Puoi anche utilizzare il metodo dell'API jobs.get o la visualizzazione INFORMATION_SCHEMA.JOBS per recuperare il piano di query e le informazioni sulle tempistiche. Queste informazioni vengono utilizzate Visualizzatore BigQuery, è uno strumento open source che rappresenta visivamente il flusso delle fasi di esecuzione in del job BigQuery.

Quando BigQuery esegue un job di query, converte il testo un'istruzione SQL in un grafico di esecuzione. Questo grafico è suddiviso in una serie di fasi della query, che a loro volta sono composte da insiemi più granulari passaggi di esecuzione. BigQuery utilizza un'architettura parallela fortemente distribuita per eseguire queste query. Le fasi di BigQuery modellano unità di lavoro che che molti potenziali worker potrebbero essere eseguiti in parallelo. Le fasi comunicano con uno tramite un un'architettura di shuffle veloce e distribuita.

Piano di esecuzione delle query.

Oltre al piano di query, i job di query espongono anche una cronologia di esecuzione. Questa sequenza temporale fornisce un conteggio delle unità di lavoro completate, in attesa e attive all'interno dei worker di query. Una query può avere più fasi con stato lavoratori contemporaneamente, quindi la sequenza temporale ha lo scopo di mostrare l'avanzamento complessivo la query.

Statistiche di Spostamenti.

Per stimare il costo computazionale di una query, puoi esaminare il numero totale di secondi di slot consumati dalla query. Minore è il numero di slot secondi, meglio è, perché significa che sono disponibili più risorse in esecuzione nello stesso progetto contemporaneamente.

Le statistiche relative al piano di query e alla cronologia possono aiutarti a capire in che modo BigQuery esegue le query e se determinate fasi dominano la risorsa all'utilizzo delle risorse. Ad esempio, una fase JOIN che genera molte più righe di output di righe di input potrebbero indicare un'opportunità di filtrare in precedenza nella query. Tuttavia, la natura gestita del servizio limita la possibilità di intervenire direttamente su alcuni dettagli. Per le best practice e le tecniche per migliorare l'esecuzione e il rendimento delle query, consulta Ottimizzare il calcolo delle query.

Passaggi successivi