Introduzione all'ottimizzazione delle prestazioni delle query

A volte, le query vengono eseguite più lentamente di quanto vorresti. In generale, le query che svolgono un lavoro ridotto hanno prestazioni migliori. Vengono eseguiti più velocemente e consumano meno e risorse, il che può comportare costi inferiori e meno errori. Questo documento fornisce una panoramica delle tecniche di ottimizzazione che possono migliorare delle prestazioni in BigQuery.

Prestazioni delle query

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

Per valutare se determinate query sono problematiche o se stai riscontrando conflitti tra le risorse, puoi Utilizzare Cloud Monitoring oppure i grafici delle risorse amministrative di BigQuery per monitorare il consumo di risorse nel tempo da parte dei job BigQuery. Se a identificare una query lenta o che richiede molte risorse, le ottimizzazioni delle prestazioni per quella 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 memoria rapido che accelera molti Query SQL in BigQuery mediante la memorizzazione nella cache in modo intelligente i dati che utilizzi più spesso. BI Engine è integrato in BigQuery, il che significa che spesso puoi ottenere prestazioni migliori senza alcuna modifica alle query.

Come con qualsiasi sistema, l'ottimizzazione delle prestazioni a volte comporta dei compromessi. Ad esempio, l'utilizzo della sintassi SQL avanzata a volte può introdurre complessità e ridurre il numero di query per chi non è esperto di SQL. Anche il tempo dedicato alle micro-ottimizzazioni per carichi di lavoro non critici potrebbe alle risorse di distanza dalla creazione di nuove funzionalità per le applicazioni o dalla creazione ottimizzazioni più efficaci. Pertanto, per aiutarti a raggiungere ritorno sull'investimento massimo possibile, ti consigliamo di concentrare l'attenzione ottimizzazioni sui carichi di lavoro più importanti per l'analisi dei dati pipeline di dati.

Capacità e contemporaneità

BigQuery offre due modelli di prezzi per le query: i prezzi on demand e in base alla capacità pricing. Il modello on demand fornisce 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 un'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.

Durante l'elaborazione delle query SQL, BigQuery suddivide necessaria per eseguire ogni fase di una query slot machine. BigQuery determina automaticamente 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'avvio dell'esecuzione, BigQuery calcola il numero di slot in ogni fase della query in base alle dimensioni e alla complessità dello stage 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 sempre comporta prestazioni più veloci per una query. Tuttavia, un un pool di slot più ampio può migliorare le prestazioni di ambienti grandi o complessi e le prestazioni dei carichi di lavoro altamente simultanei. A migliorare le prestazioni delle query, puoi modificare le prenotazioni degli slot oppure imposta un limite più alto per la scalabilità automatica delle 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 di slot consumato. Il piano di query include anche dettagli sulle diverse fasi di esecuzione, utili per 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 API jobs.get o INFORMATION_SCHEMA.JOBS vista per recuperare le informazioni sul piano di query e sulla sequenza temporale. 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 parallelismo molto distribuito dell'architettura per eseguire queste query. Le fasi di BigQuery modellano unità di lavoro che molti worker potenziali potrebbero essere eseguiti in parallelo. Le fasi comunicano con 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 una contabilità delle unità di lavoro completate, in sospeso e e attivi tra i 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 Timeline.

Per stimare quanto è costosa dal punto di vista del calcolo, puoi esaminare il numero totale di secondi di slot utilizzati 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à che alcuni dettagli vengano direttamente utilizzabili. Per conoscere le best practice e le tecniche per migliorare la query esecuzione e prestazioni, consulta Ottimizza il calcolo delle query.

Passaggi successivi