Informazioni sugli slot

Uno slot BigQuery è una CPU virtuale utilizzata da BigQuery per eseguire query SQL. Durante l'esecuzione della query, BigQuery calcola automaticamente il numero di slot richiesti da una query, a seconda della query dimensioni e complessità.

Puoi scegliere se utilizzare un modello di prezzi on demand. o un modello di prezzi basato sulla capacità. Entrambi modelli utilizzano per l'elaborazione dei dati. Con un modello basato sulla capacità, puoi pagare per o capacità di elaborazione delle query con scalabilità automatica. Il modello basato sulla capacità ti offre un controllo esplicito su slot e capacità di analisi, mentre il modello on demand al contrario.

I clienti che usano il modello di prezzi basato sulla capacità scelgono esplicitamente quanti slot di riserva. Le tue query vengono eseguite all'interno di questa capacità e pagherai per questa capacità ogni secondo di cui viene eseguito il deployment. Ad esempio, se acquisti 2000 gli slot BigQuery, le query aggregate sono limitate all'uso 2000 CPU virtuali in un dato momento. Hai questa capacità finché non elimini e paghi per 2000 slot finché non li elimini.

I progetti sul modello di prezzi on demand di BigQuery sono soggetti a quota di slot per progetto con burst temporaneo funzionalità. La maggior parte degli utenti del modello on demand trova la capacità slot predefinita più che sufficiente. A seconda del carico di lavoro, l'accesso a più slot migliora le prestazioni della query. Per verificare quanti slot vengono utilizzati dal tuo account, consulta Monitoraggio di BigQuery

Stima il numero di slot da acquistare

BigQuery è progettato per scalare in modo efficiente Google Cloud. A seconda del carico di lavoro, è probabile che la capacità incrementale ti fornisca vantaggi incrementali. Di conseguenza, la scelta del numero ottimale di slot dipende dai requisiti di prestazioni, velocità effettiva e utilità.

Puoi fare esperimenti con gli slot di riferimento e con scalabilità automatica per determinare qual è configurazione degli slot. Ad esempio, puoi testare il carico di lavoro utilizzando di base, quindi 1000, 1500 e 2000 e osservare l'impatto delle prestazioni.

Puoi anche esaminare l'utilizzo attuale degli slot dei tuoi progetti, insieme il prezzo mensile scelto che vuoi pagare. I carichi di lavoro on demand hanno di 2000 slot, ma è importante controllare quanti slot sono effettivamente utilizzato dai tuoi progetti INFORMATION_SCHEMA.JOBS* visualizzazioni, Cloud Logging, API Jobs o controllo BigQuery logaritmi. Per ulteriori informazioni, vedi Visualizzazione degli slot disponibili e degli slot allocati.

Cronologia di utilizzo degli slot.

Dopo aver acquistato gli slot ed eseguito i carichi di lavoro per almeno sette giorni, puoi: usa lo strumento di stima degli slot per analizzare le prestazioni e modellare l'effetto dell'aggiunta o riducendo gli slot. Per ulteriori informazioni, vedi Stima i requisiti di capacità degli slot.

Esecuzione di query utilizzando gli slot

Quando BigQuery esegue un job di query, converte il testo L'istruzione SQL in un grafico di esecuzione, suddivisa in una serie di query fasi, che a loro volta sono composte da insiemi di esecuzioni più granulari passaggi. BigQuery utilizza un parallelismo molto distribuito dell'architettura per eseguire queste query e le fasi modellano le unità di lavoro che molti potenziali worker possono eseguire in parallelo. Le fasi comunicano con usando una velocità architettura shuffle distribuita, che verrà discusso più in dettaglio Blog di Google Cloud.

L'esecuzione delle query in BigQuery è dinamica, il che significa che mentre il piano di query può essere modificato. Fasi che introdotte durante l'esecuzione di una query vengono spesso usati per migliorare i dati la distribuzione tra i worker delle query.

BigQuery può eseguire più fasi contemporaneamente. BigQuery può utilizzare l'esecuzione speculativa per accelerare le query e BigQuery può ripartizione dinamica una fase per ottenere il caricamento in contemporanea ottimale.

Gli slot BigQuery eseguono singole unità di lavoro in ogni fase la query. Ad esempio, se BigQuery determina che lo stato il fattore di parallelizzazione ottimale è 10, richiede 10 slot per elaborare durante la fase di sviluppo.

Slot di query.

La query GoogleSQL è un DAG dinamico

Esecuzione della query in economia delle risorse slot

Se una query richiede più slot di quelli attualmente disponibili, BigQuery mette in coda le singole unità di lavoro e attende che gli spazi siano disponibili. Man mano che si procede nell'esecuzione della query e che gli slot si liberano, le unità di lavoro in coda vengono selezionate dinamicamente per l'esecuzione.

BigQuery può richiedere un numero illimitato di slot per una fase specifica di una query. Il numero di slot richiesti non è correlato alla quantità di capacità di acquisto, ma piuttosto un'indicazione della capacità ottimale fattore di parallelizzazione scelto da BigQuery per quella fase. Unità di lavoro entrano in coda e vengono eseguiti man mano che gli slot diventano disponibili.

Quando le richieste di query superano gli slot impegnati, non ti vengono addebitati costi slot aggiuntivi e non ti vengono addebitate tariffe on demand aggiuntive. Il tuo singole unità di lavoro in coda.

Ad esempio,

  1. Una fase di query richiede 2000 slot, ma ne sono disponibili solo 1000.
  2. BigQuery consuma tutti i 1000 slot e mette in coda l'altro 1000 slot.
  3. Successivamente, se 100 slot terminano il lavoro, vengono selezionati dinamicamente di 100 unità di lavoro dalle 1.000 in coda. 900 unità di i lavori in coda rimangono.
  4. Successivamente, se 500 slot terminano il loro lavoro, vengono selezionati dinamicamente 500 unità di lavoro dalle 900 in coda. 400 unità di i lavori in coda rimangono.

Pianificazione slot.

Slot BigQuery in coda se la domanda supera la disponibilità

Slot inattivi

Alcuni slot potrebbero essere inattivi in un determinato momento. Ecco alcuni esempi:

  • Impegni slot non allocati a nessuna prenotazione.
  • Slot allocati a un riferimento della prenotazione, ma non in uso.

Per impostazione predefinita, le query in esecuzione in una prenotazione utilizzano automaticamente gli slot inattivi da ad altre prenotazioni all'interno dello stesso progetto di amministrazione. Ciò significa che un job può sempre essere eseguito finché è disponibile della capacità. La capacità inattiva è immediatamente prerilasciabile tornando alla capacità originale assegnata in base alle esigenze, a prescindere dalla priorità della query che richiede Google Cloud. Ciò avviene automaticamente in tempo reale.

Per evitare questo comportamento e garantire che una prenotazione utilizzi solo i dati di cui è stato eseguito il provisioning slot, imposta ignore_idle_slots su true. Prenotazioni con ignore_idle_slots impostato su true può, tuttavia, condividere i suoi slot inattivi con altre prenotazioni.

Non puoi condividere gli slot inattivi tra prenotazioni di diversi . Puoi condividere solo gli slot di riferimento o in slot impegnati. Slot a scalabilità automatica potrebbero essere temporaneamente disponibili, ma non condivisibili perché potrebbero scalare verso il basso.

Se ignore_idle_slots è false, una prenotazione può avere un numero di slot pari a 0 e hai ancora accesso agli slot inutilizzati. Se utilizzi solo default su prenotazione, disattiva ignore_idle_slots come best practice. Puoi e poi assegnare un progetto cartella a quella prenotazione e userà solo slot inattivi.

Compiti di tipo ML_EXTERNAL costituiscono un'eccezione perché gli slot utilizzati I job di creazione di modelli esterni di BigQuery ML non sono prerilasciabili. La slot in una prenotazione con tipi di assegnazione ML_EXTERNAL e QUERY sono disponibili solo per altri job di query quando gli slot non sono occupati ML_EXTERNAL job. Inoltre, questi job non possono utilizzare slot inattivi di altri prenotazioni.

Allocazione degli slot all'interno delle prenotazioni

BigQuery alloca la capacità degli slot all'interno di una singola prenotazione utilizzando un algoritmo chiamato fair pianificazione.

Lo scheduler BigQuery applica la stessa condivisione degli slot tra con query in esecuzione all'interno di una prenotazione e poi all'interno di job di un dato progetto. Lo scheduler fornisce equità finale. Durante la breve periodi di tempo, alcuni job potrebbero ricevere una quota sproporzionata di slot, ma lo scheduler alla fine lo corregge. L'obiettivo dello scheduler è trovare un equilibrio tra la rimozione aggressiva delle attività in esecuzione (il che si traduce sprecare il tempo di slot) ed essere troppo permissivi (il che si traduce in lavori con lunghi di attività in esecuzione che ricevono una quota sproporzionata del tempo di slot).

Se un job importante ha sempre bisogno di più slot di quelli che riceve scheduler, valuta la possibilità di creare una prenotazione aggiuntiva con un numero garantito di slot e assegnando il job a quella prenotazione.

Buona pianificazione in BigQuery

Gli slot sono distribuiti equamente tra i progetti e poi all'interno dei job del progetto. Ciò significa che ogni query ha accesso a tutti gli slot disponibili e la capacità viene riallocata in modo dinamico e automatico tra man mano che la capacità di ogni query cambia. Query completate e nuove query vengono inviate per l'esecuzione alle seguenti condizioni:

  • Ogni volta che viene inviata una nuova query, la capacità viene automaticamente riallocata alle query in esecuzione. Le singole unità di lavoro possono essere messo in pausa, ripreso e messo in coda quando aumenta la capacità disponibili per ogni query.
  • Ogni volta che una query viene completata, la capacità utilizzata da tale query diventa immediatamente disponibile per tutte le altre query.
  • Ogni volta che la capacità di una query richiede una modifica a causa di modifiche nella con un DAG dinamico, BigQuery rivaluta automaticamente la capacità la disponibilità per questa e per tutte le altre query, gli slot machine in base alle necessità.

Pianificazione di più query.

Una pianificazione equa in BigQuery

A seconda della complessità e delle dimensioni, una query potrebbe non richiedere tutti gli slot il diritto o richiederne altri. BigQuery in modo dinamico garantisce che, data una pianificazione equo, tutti gli slot possano essere utilizzati interamente in qualsiasi in un determinato momento.