Informazioni sugli slot
Uno slot BigQuery è un'unità di calcolo virtuale utilizzata da BigQuery per eseguire query SQL, codice Python o altri tipi di job. Durante l'esecuzione di una query, BigQuery determina automaticamente quanti slot vengono utilizzati dalla query. Il numero di slot utilizzati dipende dalla quantità di dati elaborati, dalla complessità della query e dal numero di slot disponibili. In generale, l'accesso a più slot ti consente di eseguire più query contemporaneamente e le query complesse possono essere eseguite più velocemente. Non puoi modificare manualmente il numero di slot utilizzati da BigQuery per eseguire le query.
Prezzi on demand e basati sulla capacità
Anche se tutte le query utilizzano slot, hai due opzioni per la modalità di addebito dell'utilizzo: il modello di prezzo on demand o il modello di prezzo basato sulla capacità.
Per impostazione predefinita, ti viene addebitato l'importo in base al modello on demand. Con questo modello, ti viene addebitato l'importo del trattamento dati (misurato in TiB) da ogni query. I progetti che utilizzano il modello on demand sono soggetti a un limite massimo di slot simultanei per i prezzi on demand con capacità di burst temporaneo. La maggior parte degli utenti che utilizzano il modello on demand ritiene che questo limite di capacità degli slot sia più che sufficiente. Tuttavia, a seconda del carico di lavoro, l'accesso a più slot potrebbe migliorare le prestazioni delle query. Per controllare l'utilizzo degli slot del tuo account, consulta Monitora l'integrità, l'utilizzo delle risorse e i job.
Con il modello basato sulla capacità, paghi per la capacità degli slot allocata per le tue query nel tempo. Questo modello ti offre un controllo esplicito sulla capacità totale degli slot. Scegli esplicitamente la quantità di slot da utilizzare tramite una prenotazione. Puoi specificare il numero di slot in una prenotazione come importo di riferimento, che viene sempre allocato, o come importo con scalabilità automatica, che viene allocato quando necessario. Le prenotazioni con slot con scalabilità automatica scalano la capacità per soddisfare le esigenze del workload. BigQuery alloca gli slot in base alle variazioni dei workload. In questo modo puoi configurare il numero di slot in una prenotazione in base alle prestazioni o alla criticità del workload che utilizza la prenotazione.
Evita costi on demand imprevisti
Per evitare che i progetti non assegnati o appena creati utilizzino per impostazione predefinita i prezzi on demand, gestisci le prenotazioni BigQuery utilizzando la gerarchia delle risorseGoogle Cloud con le seguenti pratiche:
- Assegna a livello di cartella o organizzazione: anziché una configurazione progetto per progetto, crea un'assegnazione della prenotazione a livello di cartella o organizzazione. In questo modo, tutti i progetti esistenti e futuri all'interno di questa gerarchia ereditano automaticamente la prenotazione e utilizzano la capacità degli slot della prenotazione.
- Considera il comportamento predefinito: senza un'assegnazione esplicita o ereditata, BigQuery applica automaticamente il modello di prezzi on demand.
- Esegui l'override per le eccezioni: se progetti specifici devono utilizzare i prezzi on demand, puoi eseguire l'override dell'assegnazione ereditata assegnando esplicitamente questi progetti alla prenotazione Nessuna.
Per informazioni dettagliate sulla priorità delle assegnazioni, consulta Assegnazioni delle prenotazioni.
Esecuzione delle query utilizzando gli slot
Quando BigQuery esegue un job di query, converte l'istruzione SQL in un piano di esecuzione, composto da una serie di fasi della query. Le fasi sono a loro volta costituite da insiemi di passaggi di esecuzione. BigQuery utilizza un'architettura parallela distribuita per eseguire le query. Le fasi modellano le unità di lavoro che possono essere eseguite in parallelo. I dati vengono passati tra le fasi utilizzando un'architettura di shuffle distribuito, discussa in maggiore dettaglio in questo blog post diGoogle Cloud .
L'esecuzione delle query BigQuery è dinamica. Un piano di query può essere modificato mentre la query è in fase di elaborazione. La distribuzione del lavoro può essere ottimizzata per la distribuzione dei dati man mano che vengono aggiunte le fasi. Inoltre, la capacità per l'esecuzione di una query può cambiare quando altre query iniziano o terminano o quando il gestore della scalabilità automatica aggiunge slot a una prenotazione.
BigQuery può eseguire più fasi contemporaneamente, può utilizzare l'esecuzione speculativa per accelerare una query e può ripartizionare dinamicamente una fase per ottenere una parallelizzazione ottimale.
Economia delle risorse degli slot
Se una query richiede più slot rispetto a quelli disponibili, BigQuery aggiunge singole unità di lavoro alla coda e attende che gli slot diventino disponibili. Man mano che l'esecuzione delle query procede e gli slot diventano disponibili, queste unità di lavoro in coda vengono acquisite in modo dinamico per l'esecuzione.
BigQuery può richiedere un numero qualsiasi di slot per una determinata fase di una query. Il numero di slot richiesti non è correlato alla quantità di capacità acquistata, ma è piuttosto un'indicazione del fattore di parallelizzazione più ottimale scelto da BigQuery per quella fase. Le unità di lavoro vengono messe in coda ed eseguite man mano che gli slot diventano disponibili.
Quando le richieste di query superano gli slot disponibili, non ti vengono addebitati costi per slot aggiuntivi e non ti vengono addebitate tariffe on demand aggiuntive. Le singole unità di lavoro vengono messe in coda.
Ad esempio,
- Una fase di query richiede 2000 slot, ma ne sono disponibili solo 1000.
- BigQuery utilizza tutti i 1000 slot e mette in coda gli altri 1000 slot.
- Successivamente, se 100 slot terminano il lavoro, prelevano dinamicamente 100 unità di lavoro dalle 1000 unità di lavoro in coda. Rimangono 900 unità di lavoro in coda.
- Dopodiché, se 500 slot terminano il lavoro, prelevano dinamicamente 500 unità di lavoro dalle 900 unità di lavoro in coda. Rimangono 400 unità di lavoro in coda.
Se il workload richiede più slot di quelli disponibili per la prenotazione, il tempo di esecuzione del job può aumentare, poiché i job attendono che gli slot diventino disponibili. Questo fenomeno è noto come contesa slot. La contesa degli slot può aumentare se la domanda del workload è molto maggiore degli slot disponibili per la prenotazione.
Assegnazione della priorità alla capacità
Quando BigQuery riscontra una domanda elevata di risorse slot in una regione specifica, gestisce la contesa dando priorità alla capacità. Questa priorità garantisce che i clienti con modelli di capacità di livello superiore siano meno interessati. Il sistema dà la priorità alla capacità nel seguente ordine:
- Baseline e capacità impegnata delle versioni Enterprise Plus ed Enterprise.
- Capacità con scalabilità automatica di Enterprise Plus.
- Capacità con scalabilità automatica della versione Enterprise.
- Standard Edition e capacità on demand.
In caso di contesa in una regione, le richieste di capacità Standard Edition e on demand hanno maggiori probabilità di subire ritardi nell'accesso perché il sistema alloca prima le risorse alle versioni di livello superiore.
Pianificazione equa in BigQuery
BigQuery alloca la capacità degli slot all'interno di una singola prenotazione utilizzando un algoritmo chiamato pianificazione equa.
Lo scheduler di BigQuery applica la condivisione equa degli slot tra i progetti con query in esecuzione all'interno di una prenotazione, quindi all'interno dei job di un determinato progetto. Lo scheduler garantisce l'equità finale. Durante brevi periodi, alcuni job potrebbero ricevere una quota sproporzionata di slot, ma lo scheduler alla fine corregge questo problema. L'obiettivo dello scheduler è trovare un equilibrio tra l'eliminazione aggressiva delle attività in esecuzione (che comporta uno spreco di tempo di slot) e un'eccessiva indulgenza (che comporta l'assegnazione di una quota sproporzionata del tempo di slot ai job con attività a lunga esecuzione).
La pianificazione equa garantisce che ogni query abbia accesso a tutti gli slot disponibili in qualsiasi momento e che la capacità venga riassegnata in modo dinamico e automatico tra le query attive man mano che cambiano le esigenze di capacità di ciascuna query. Le query vengono completate e ne vengono inviate di nuove per l'esecuzione alle seguenti condizioni:
- Ogni volta che viene inviata una nuova query, la capacità viene riallocata automaticamente tra le query in esecuzione. Le singole unità di lavoro possono essere messe in pausa, riprese e messe in coda in modo controllato man mano che diventa disponibile più capacità per ogni query.
- Ogni volta che una query viene completata, la capacità consumata da quella query diventa automaticamente disponibile per l'utilizzo da parte di tutte le altre query.
- Ogni volta che le richieste di capacità di una query cambiano a causa di modifiche al DAG dinamico della query, BigQuery rivaluta automaticamente la disponibilità di capacità per questa e tutte le altre query, riassegnando e mettendo in pausa gli slot in base alle necessità.
A seconda della complessità e delle dimensioni, una query potrebbe non richiedere tutti gli slot a cui ha diritto o potrebbe richiederne di più. BigQuery garantisce dinamicamente che, dato uno scheduling equo, tutti gli slot possano essere utilizzati completamente in qualsiasi momento.
Se un job importante richiede costantemente più slot di quelli che riceve dallo scheduler, valuta la possibilità di creare una prenotazione aggiuntiva con il numero di slot richiesto e di assegnare il job a quella prenotazione.
Come esempio di pianificazione equa, supponiamo di avere la seguente configurazione della prenotazione:
- Prenotazione
A, che ha 1000 slot di base senza scalabilità automatica - Il progetto
Ae il progettoB, assegnati alla tua prenotazione
Scenario 1: nel progetto A, esegui la query A (una query simultanea) che richiede un utilizzo elevato di slot, mentre nel progetto B esegui 20 query simultanee. Anche se sono presenti un totale di 21 query che utilizzano la prenotazione A, la distribuzione degli slot è la seguente:
- Il progetto
Ariceve 500 slot e la queryAviene eseguita con 500 slot. - Il progetto
Briceve 500 slot condivisi tra le 20 query.
Scenario 2: nel progetto A, esegui la query A (una query simultanea) che
richiede 100 slot per l'esecuzione e nel progetto B esegui 20 query simultanee.
Poiché la query A non richiede il 50% della prenotazione, la distribuzione degli slot è la seguente:
- Il progetto
Ariceve 100 slot e la queryAviene eseguita con 100 slot. - Il progetto
Briceve 900 slot condivisi tra le sue 20 query.
Al contrario, considera la seguente configurazione della prenotazione:
- Prenotazione
B, che ha 1000 slot di riferimento senza scalabilità automatica. - 10 progetti, tutti assegnati alla prenotazione
B.
Supponiamo che i 10 progetti eseguano query con una domanda di slot sufficiente. In questo caso, ogni progetto riceve 1/10 degli slot di prenotazione totali (ovvero 100 slot), indipendentemente dal numero di query in esecuzione su ciascun progetto.
Quote e limiti degli slot
Le quote e i limiti degli slot forniscono una protezione per BigQuery. I diversi modelli di prezzi utilizzano diversi tipi di quote di slot, come segue:
Modello di prezzi on demand: sei soggetto a un limite massimo di slot simultanei per i prezzi on demand con funzionalità di burst temporaneo. A seconda dei workload, l'accesso a un numero maggiore di slot può migliorare le prestazioni delle query.
Modello di prezzi basato sulla capacità: le quote e i limiti delle prenotazioni definiscono il numero massimo di slot che puoi allocare in tutte le prenotazioni in una località. Se utilizzi la scalabilità automatica, la somma delle dimensioni massime della prenotazione non può superare questo limite. Ti vengono addebitati solo i costi per le prenotazioni e gli impegni, non per le quote. Per informazioni su come aumentare la quota di slot, consulta Richiedi un aumento della quota.
Tieni presente la distinzione tra slot allocati (che influiscono sulla quota e sulla fatturazione) e slot utilizzati (che rappresentano il computing attivo). Per un confronto dettagliato tra i due tipi, consulta Informazioni sulle metriche degli slot.
Per verificare quanti slot stai utilizzando, consulta Monitoraggio di BigQuery.
Slot inattivi
Il concetto di slot inattivi si applica solo al modello di prezzi basato sulla capacità e non agli slot con scalabilità automatica. Gli slot vengono considerati "inattivi" in due scenari:
- Slot di impegni non allocati a nessuna base di riferimento della prenotazione.
- Slot allocati a una base di riferimento della prenotazione, ma non utilizzati attivamente dai job all'interno di quella prenotazione.
Per massimizzare il valore e l'efficienza della capacità acquistata, BigQuery è progettato per condividere automaticamente questi slot inattivi. Per impostazione predefinita, le query in esecuzione in qualsiasi prenotazione possono utilizzare gli slot inattivi di altre prenotazioni all'interno dello stesso progetto di amministrazione.
Quando la prenotazione che "possiede" questi slot ne ha bisogno per un job, BigQuery li recupera immediatamente. La restituzione degli slot presi in prestito avviene senza problemi entro pochi millisecondi per garantire che il carico di lavoro della prenotazione proprietaria non venga influenzato. Durante questo breve trasferimento, potresti notare nei grafici di monitoraggio che il consumo totale di slot supera brevemente la capacità totale in tutte le prenotazioni. Si tratta di un artefatto normale e previsto del processo di preemptive e allocazione degli slot e non ti viene addebitato questo utilizzo temporaneo aggiuntivo.
Ad esempio, supponiamo che tu abbia la seguente configurazione della prenotazione:
project_aè assegnato areservation_a, che ha 500 slot di riferimento senza scalabilità automatica.project_bè assegnato areservation_b, che ha 100 slot di riferimento senza scalabilità automatica.- Entrambe le prenotazioni si trovano nella stessa regione e nello stesso progetto amministrativo e non sono assegnati altri progetti a queste prenotazioni.
Esegui query_b in project_b. Se non è in esecuzione alcuna query in project_a, query_b ha accesso ai 500 slot inattivi di reservation_a. Mentre query_b
è ancora in esecuzione, potrebbe utilizzare fino a 600 slot: 100 slot di base più 500 slot inattivi.
Mentre query_b è in esecuzione, supponiamo che tu esegua query_a in project_a che può utilizzare 500 slot.
- Poiché hai prenotato 500 slot di riferimento per
project_a,query_aviene avviato immediatamente e gli vengono assegnati 500 slot. - Il numero di slot assegnati a
query_bdiminuisce rapidamente fino a 100 slot di base. - Le query aggiuntive eseguite in
project_bcondividono questi 100 slot. Se le query successive non hanno slot sufficienti per l'avvio, vengono messe in coda finché le query in esecuzione non vengono completate e gli slot non diventano disponibili.
In questo esempio, se project_b è stato assegnato a una prenotazione senza slot di base o scalabilità automatica, query_b non avrà slot dopo l'avvio dell'esecuzione di query_a. BigQuery metterebbe in pausa query_b finché non sono disponibili slot inattivi o la query non va in timeout. Le query aggiuntive in project_b verrebbero messe in coda fino a quando non saranno disponibili slot inattivi.
Controllo e limitazione della condivisione degli slot inattivi
Per impedire a una prenotazione specifica di prendere in prestito slot inattivi da altre
prenotazioni, imposta la proprietà ignore_idle_slots su true. Tieni presente che questa
impostazione controlla solo i prestiti, non i prestiti. Una prenotazione con
ignore_idle_slots impostato su true non può più prendere in prestito capacità, ma può comunque
prestare i propri slot inattivi ad altre prenotazioni che ne hanno bisogno. Se ignore_idle_slots è false, una prenotazione può avere un numero di slot pari a 0 e avere comunque accesso agli slot inutilizzati.
Oltre a ignore_idle_slots, puoi utilizzare i seguenti meccanismi per gestire e controllare la condivisione degli slot inattivi tra i tuoi workload:
- Equità basata sulla prenotazione: distribuisce gli slot inattivi in modo equo tra le prenotazioni anziché tra i singoli progetti, impedendo ai carichi di lavoro multi-progetto di monopolizzare il pool di slot inattivi. Per attivare questa impostazione, consulta Attiva l'equità basata sulle prenotazioni.
- Prenotazioni prevedibili: stabilisce i limiti di capacità massima durante l'utilizzo della capacità (inclusi gli slot inattivi), garantendo una scalabilità delle risorse prevedibile senza burst imprevisti. Per i passaggi di configurazione, vedi Crea una prenotazione prevedibile.
- Gruppi di prenotazioni: raggruppano le prenotazioni correlate per limitare il consumo totale di slot all'interno del gruppo e dare la priorità alla condivisione degli slot inattivi all'interno del gruppo prima della condivisione nell'organizzazione. Per configurare i gruppi, consulta Crea un gruppo di prenotazioni.
Esistono due limitazioni principali relative alla condivisione degli slot inattivi:
- Non puoi condividere slot inattivi tra prenotazioni di versioni diverse.
- Compiti di tipo
ML_EXTERNALfanno eccezione in quanto gli slot utilizzati dai job di creazione di modelli esterni di BigQuery ML non sono preemptive. Gli slot di una prenotazione con tipi di assegnazioneML_EXTERNALeQUERYsono disponibili per altri job di query solo quando non sono occupati dai jobML_EXTERNAL. Inoltre, questi job non possono utilizzare slot inattivi di altre prenotazioni.
Equità basata sulla prenotazione
Con l'equità basata sulle prenotazioni, BigQuery assegna la priorità e distribuisce gli slot inattivi in modo equo tra tutte le prenotazioni all'interno dello stesso progetto di amministrazione, indipendentemente dal numero di progetti che eseguono job in ogni prenotazione. Ogni prenotazione riceve una quota simile della capacità disponibile nel pool di slot inattivi, quindi i suoi slot vengono distribuiti equamente tra i suoi progetti. Questa funzionalità è supportata solo con le versioni Enterprise o Enterprise Plus.
Il seguente grafico mostra come vengono distribuite le slot inattive senza l'equità basata sulle prenotazioni attivata:
In questo grafico, gli slot inattivi vengono condivisi equamente tra i progetti.
Se l'equità basata sulla prenotazione non è abilitata, gli slot inattivi disponibili vengono distribuiti in modo uniforme tra i progetti all'interno delle prenotazioni.
Il seguente grafico mostra come vengono distribuiti gli slot inattivi con l'equità basata sulle prenotazioni abilitata:
In questo grafico, gli slot inattivi sono condivisi equamente tra le prenotazioni, non tra i progetti.
Con l'equità basata sulle prenotazioni attivata, gli slot inattivi disponibili vengono distribuiti equamente tra le prenotazioni.
Quando abiliti la distribuzione equa basata sulla prenotazione, esamina il consumo di risorse per gestire la disponibilità degli slot e le prestazioni delle query.
Evita di fare affidamento esclusivamente sugli slot inattivi per i workload di produzione con requisiti di tempo rigorosi. Questi job devono utilizzare slot di base o con scalabilità automatica. Ti consigliamo di utilizzare gli slot inattivi per i job con priorità più bassa, perché gli slot possono essere prerilasciati in qualsiasi momento.
Scalabilità automatica degli slot
La sezione seguente descrive gli slot di scalabilità automatica e il loro funzionamento con le prenotazioni.
Utilizza le prenotazioni con scalabilità automatica
Non è necessario acquistare impegni di slot prima di creare prenotazioni con scalabilità automatica. Gli impegni slot offrono una tariffa scontata per gli slot utilizzati in modo coerente, ma sono facoltativi con le prenotazioni con scalabilità automatica. Per creare una prenotazione con scalabilità automatica, assegna alla prenotazione un numero massimo di slot (la dimensione massima della prenotazione). Puoi identificare il numero massimo di slot con scalabilità automatica sottraendo la dimensione massima della prenotazione da eventuali slot di riferimento facoltativi assegnati alla prenotazione.
Quando crei prenotazioni con scalabilità automatica, tieni presente quanto segue:
- BigQuery scala le prenotazioni quasi istantaneamente fino a raggiungere il numero di slot necessari per eseguire i job oppure il numero massimo di slot disponibili per la prenotazione. Gli slot vengono sempre scalati automaticamente in multipli di 50.
- A differenza degli slot di riferimento, BigQuery non prenota gli slot con scalabilità automatica in anticipo. Questa capacità, che collega gli slot di base e la dimensione massima della prenotazione, dipende dalla disponibilità attuale del sistema. Durante i periodi di domanda elevata, i vincoli di capacità potrebbero ritardare lo scale up.
- Lo scale up si basa sull'utilizzo effettivo e viene arrotondato per eccesso all'incremento di 50 slot più vicino.
- Gli slot con scalabilità automatica vengono addebitati in base ai prezzi di calcolo della capacità per l'edizione associata durante lo scale up. Ti viene addebitato il costo per il numero di slot scalati, non per il numero di slot utilizzati. Questo addebito si applica anche se il job che causa lo scale up di BigQuery non va a buon fine. Per questo motivo, non utilizzare lo schema delle informazioni sui job per la corrispondenza della fatturazione. Consulta invece Monitorare la scalabilità automatica con lo schema delle informazioni.
- Anche se il numero di slot viene sempre scalato in multipli di 50, potrebbe essere scalato di più di 50 slot in un unico passaggio. Ad esempio, se il tuo carico di lavoro richiede 450 slot aggiuntivi, BigQuery può tentare di scalare di 450 slot contemporaneamente per soddisfare il requisito di capacità.
- BigQuery esegue lo scale down quando i job associati alla prenotazione non hanno più bisogno della capacità. Per impostazione predefinita, la capacità viene fatturata al secondo con una durata minima di un minuto. Puoi attivare la scalabilità fluida di BigQuery a livello di prenotazione per la fatturazione al secondo senza durata minima.
La capacità scalata automaticamente viene conservata per almeno 60 secondi. Questo periodo di 60 secondi è chiamato finestra di scale down. Qualsiasi nuovo picco di capacità reimposta la finestra di scale down, trattando l'intero livello di capacità come una nuova concessione. Tuttavia, se sono trascorsi 60 secondi o più dall'ultimo aumento di capacità e la domanda è inferiore, il sistema riduce la capacità senza reimpostare la finestra di fare lo scale down, consentendo riduzioni consecutive senza un ritardo imposto.
Ad esempio, se la capacità iniziale del workload scala fino a 100 slot, il picco viene mantenuto per almeno 60 secondi. Se, durante questa finestra di scale down, il tuo carico di lavoro scala fino a un nuovo picco di 200 slot, inizia una nuova finestra di scale down per 60 secondi. Se non si verifica un nuovo picco durante questa finestra di scale down, il carico di lavoro inizia a fare lo scale down al termine dei 60 secondi.
Considera il seguente esempio dettagliato: alle 12:00:00, la capacità iniziale viene scalata a 100 slot e l'utilizzo dura un secondo. Questo picco viene mantenuto per almeno 60 secondi, a partire dalle 12:00:00. Trascorsi 60 secondi (alle 12:01:01), se il nuovo utilizzo è di 50 slot, BigQuery esegue lo scale down a 50 slot. Se alle 12:01:02 il nuovo utilizzo è pari a 0 slot, BigQuery esegue immediatamente lo scale down a 0 slot. Al termine della finestra di scale down, BigQuery può fare lo scale down più volte consecutivamente senza richiedere una nuova finestra di scale down.
Scalabilità fluida di BigQuery
La scalabilità fluida di BigQuery elimina la durata minima di un minuto richiesta dalla scalabilità automatica standard e regola la capacità degli slot di secondo in secondo. Questa funzionalità non modifica gli incrementi di scalabilità di 50 slot.
Per adattarsi rapidamente alle richieste di prenotazione, la scalabilità fluida di BigQuery influisce sulla distribuzione della condivisione degli slot inattivi tra le prenotazioni in brevi incrementi di tempo, con il risultato di un numero leggermente superiore o inferiore di slot inattivi rispetto alla quota equa esatta di una prenotazione.
Per istruzioni su come attivare questa funzionalità, consulta Aggiornare le prenotazioni.
Per le prenotazioni che utilizzano il disaster recovery gestito, la scalabilità fluida di BigQuery deve essere abilitata sia nella regione principale sia in quella secondaria per garantire la fatturazione al secondo dopo un failover.
Per scoprire come utilizzare la scalabilità automatica, consulta Gestisci le prenotazioni dei workload.
Utilizzo delle prenotazioni con slot di base e con scalabilità automatica
Oltre a specificare la dimensione massima della prenotazione, puoi facoltativamente specificare un numero di slot di riferimento per prenotazione. Il riferimento è il numero minimo di slot che verranno sempre assegnati alla prenotazione e ti verranno sempre addebitati. Gli slot con scalabilità automatica vengono aggiunti solo dopo che tutti gli slot di riferimento (e gli slot inattivi, se applicabili) sono stati utilizzati. Puoi condividere gli slot di base inattivi di una prenotazione con altre prenotazioni che necessitano di capacità.
Puoi aumentare il numero di slot di base in una prenotazione ogni pochi minuti, a condizione che BigQuery abbia capacità disponibile quando effettui la richiesta. Se vuoi ridurre gli slot di base, puoi farlo una volta all'ora se hai modificato di recente la capacità degli slot di base e questi superano gli slot impegnati. Altrimenti, puoi diminuire gli slot di base ogni pochi minuti.
Gli slot di riferimento e con scalabilità automatica sono progettati per fornire capacità in base al tuo workload recente. Se prevedi un workload insolitamente elevato, ti consigliamo di aumentare la capacità di base con largo anticipo rispetto all'evento, anziché fare affidamento sugli slot di scalabilità automatica. Poiché gli aumenti della base di riferimento dipendono dalla capacità disponibile di BigQuery, pianificare in anticipo ti offre le migliori possibilità di assicurarti gli slot di cui hai bisogno. Se la richiesta di aumento della capacità non va a buon fine, attendi 15 minuti e riprova.
Se la prenotazione non dispone di slot di base o non è configurata per prendere in prestito slot inattivi da altre prenotazioni, BigQuery tenta di scalare. In caso contrario, gli slot di riferimento devono essere utilizzati completamente prima della scalabilità.
Le prenotazioni utilizzano e aggiungono aree annunci con la priorità seguente:
- Slot di riferimento.
- Condivisione di slot inattivi (se abilitata). Le prenotazioni possono condividere solo slot di base o impegnati inattivi di altre prenotazioni create con la stessa edizione e la stessa regione.
- Slot a scalabilità automatica.
Nell'esempio seguente, gli slot vengono scalati a partire da un importo di riferimento specificato. Le prenotazioni etl e dashboard hanno una dimensione di riferimento rispettivamente di 700 e 300 slot.
In questo esempio, la prenotazione etl può scalare fino a 1300 slot (700 slot di riferimento più 600 slot con scalabilità automatica). Se la prenotazione dashboard non è in uso,
la prenotazione etl può utilizzare i 300 slot della prenotazione dashboard
se non è in esecuzione alcun job, per un massimo di 1600 slot possibili.
La prenotazione dashboard può essere scalata a 1100 slot (300 slot di riferimento più
800 slot con scalabilità automatica). Se la prenotazione etl è completamente inattiva, la prenotazione dashboard può scalare fino a un massimo di 1800 slot (300 slot di base più 800 slot con scalabilità automatica più 700 slot inattivi nella prenotazione etl).
Se la prenotazione etl richiede più di 700 slot di base, che sono sempre disponibili, tenta di aggiungere slot utilizzando i seguenti metodi nell'ordine indicato:
- 700 slot di riferimento.
- Condivisione degli slot inattivi con i 300 slot di riferimento nella prenotazione
dashboard. La tua prenotazione condivide solo gli slot di base inattivi con altre prenotazioni create con la stessa edizione. - Scalabilità di 600 slot aggiuntivi fino alla dimensione massima della prenotazione.
Utilizzo degli impegni slot
L'esempio seguente mostra gli slot con scalabilità automatica che utilizzano gli impegni di capacità.
Come le baseline delle prenotazioni, gli impegni slot ti consentono di allocare un numero fisso di slot disponibili per tutte le prenotazioni. A differenza degli slot di riferimento, un impegno non può essere ridotto durante il periodo. Gli impegni slot sono facoltativi, ma possono ridurre i costi se gli slot di riferimento sono necessari per lunghi periodi di tempo. Gli impegni slot vengono utilizzati per coprire gli slot di base per le prenotazioni. La capacità degli slot inutilizzati viene quindi condivisa come slot inattivi tra le altre prenotazioni. Gli impegni slot non si applicano agli slot con scalabilità automatica. Per assicurarti di ricevere la tariffa scontata per gli slot di cui hai eseguito il commit, assicurati che gli impegni relativi agli slot siano sufficienti a coprire gli slot di base.
In questo esempio, ti viene addebitata una tariffa predefinita per gli slot di impegno di capacità. Ti viene addebitata la tariffa di scalabilità automatica per il numero di slot di scalabilità automatica dopo l'attivazione della scalabilità automatica e quando le prenotazioni sono in uno stato di scalabilità. Per la tariffa con scalabilità automatica, ti viene addebitato il costo per il numero di slot scalati, non per il numero di slot utilizzati.
L'esempio seguente mostra le prenotazioni quando il numero di slot di base supera il numero di slot impegnati.
In questo esempio, sono presenti un totale di 1000 slot di riferimento tra le due
prenotazioni, 500 dalla prenotazione etl e 500 dalla prenotazione
dashboard. Tuttavia, l'impegno copre solo 800 slot. In questo scenario,
gli slot in eccesso vengono addebitati alla tariffa con pagamento a consumo (PAYG).
Numero massimo di slot disponibili
Puoi calcolare il numero massimo di slot che una prenotazione può utilizzare aggiungendo gli slot di riferimento, il numero massimo di slot con scalabilità automatica e gli eventuali slot negli impegni creati con la stessa edizione e non coperti dagli slot di riferimento. L'esempio seguente è configurato come segue:
- Un impegno di capacità di 1000 slot annuali. Questi slot vengono assegnati come slot di riferimento nella prenotazione
etle nella prenotazionedashboard. - 700 slot di riferimento assegnati alla prenotazione
etl. - 300 slot di riferimento assegnati alla prenotazione
dashboard. - Slot a scalabilità automatica di 600 per la prenotazione
etl. - Slot con scalabilità automatica di 800 per la prenotazione
dashboard.
Per la prenotazione etl, il numero massimo di slot possibili è pari agli slot di riferimento etl (700) più gli slot di riferimento dashboard (300, se tutti gli slot sono inattivi) più il numero massimo di slot con scalabilità automatica (600). Pertanto, il
numero massimo di slot che la prenotazione etl potrebbe utilizzare in questo esempio è
1600. Questo numero supera quello dell'impegno di capacità.
Nell'esempio seguente, l'impegno annuale supera gli slot di base assegnati.
In questo esempio, abbiamo:
- Un impegno di capacità di 1600 slot annuali.
- Una dimensione massima della prenotazione di 1500 (inclusi 500 slot con scalabilità automatica).
- 1000 slot di riferimento assegnati alla prenotazione
etl.
Il numero massimo di slot disponibili per la prenotazione è pari agli slot di base (1000) più gli eventuali slot inattivi impegnati non dedicati agli slot di base (1600 slot annuali - 1000 slot di base = 600) più il numero di slot con scalabilità automatica (500). Quindi, il numero massimo di slot potenziali in questa prenotazione è 2100. Gli slot con scalabilità automatica sono slot aggiuntivi rispetto all'impegno di capacità.
A volte BigQuery potrebbe utilizzare la capacità di sistema di BigQuery disponibile per elaborare la query più velocemente di quanto normalmente consentito dal limite di slot. In questo caso, BigQuery ritarderà la restituzione dei risultati finali della query finché la capacità degli slot standard non coprirà il picco di utilizzo, garantendo che non ti venga mai addebitato un importo superiore al limite, tenendo comunque conto del calcolo totale utilizzato.
Best practice per la scalabilità automatica
Quando utilizzi per la prima volta il gestore della scalabilità automatica, imposta il numero di slot con scalabilità automatica su un numero significativo in base alle prestazioni passate e previste. Una volta creata la prenotazione, monitora attivamente il tasso di errore, il rendimento e la fattura e modifica il numero di slot di scalabilità automatica in base alle necessità.
Il gestore della scalabilità automatica ha un tempo minimo di 1 minuto prima di fare lo scale down, quindi è importante impostare il numero massimo di slot con scalabilità automatica per bilanciare prestazioni e costi. Se il numero massimo di slot con scalabilità automatica è troppo elevato e il job può utilizzare tutti gli slot per completare un job in pochi secondi, ti verranno comunque addebitati i costi per gli slot massimi per l'intero minuto. Se riduci gli slot massimi alla metà dell'importo attuale, la prenotazione viene scalata a un numero inferiore e il job può utilizzare più
slot_secondsdurante quel minuto, riducendo gli sprechi. Per assistenza nel determinare i requisiti degli slot, consulta Monitora le prestazioni dei job. Come approccio alternativo per determinare i requisiti degli slot, consulta Visualizza i suggerimenti per gli slot della versione.L'utilizzo degli slot può occasionalmente superare la somma degli slot di base e di quelli scalati. Non ti verrà addebitato l'utilizzo di slot superiore alla somma degli slot di riferimento e di quelli scalati.
Il gestore della scalabilità automatica è più efficiente per workload pesanti e di lunga durata, ad esempio workload con più query simultanee. Evita di inviare query una alla volta, poiché ogni query scala la prenotazione, che rimarrà scalata per un minimo di un minuto. Se invii continuamente query, causando un carico di lavoro costante, l'impostazione di una base di riferimento e l'acquisto di un impegno forniscono una capacità costante a un prezzo scontato.
La scalabilità automatica di BigQuery è soggetta alla disponibilità di capacità. BigQuery tenta di soddisfare la domanda di capacità dei clienti in base all'utilizzo storico. Puoi impostare una base di riferimento facoltativa per gli slot in modo che siano immediatamente disponibili. Le baseline vengono pagate indipendentemente dal fatto che vengano utilizzate o meno. Per assicurarti che la capacità sia disponibile per richieste di grandi dimensioni e non organiche, come le festività con traffico elevato, contatta il team BigQuery con diverse settimane di anticipo.
Gli slot di riferimento vengono sempre addebitati. Se un impegno di capacità scade, potresti dover modificare manualmente la quantità di slot di riferimento nelle tue prenotazioni per evitare addebiti indesiderati. Ad esempio, supponiamo che tu abbia un impegno di 1 anno con 100 slot e una prenotazione con 100 slot di base. L'impegno scade e non ha un piano di rinnovo. Una volta scaduto l'impegno, paghi per 100 slot di base secondo la tariffa con pagamento a consumo.
Osservabilità
Per informazioni sul monitoraggio dell'utilizzo degli slot e del rendimento dei job con la scalabilità automatica, consulta Monitorare la scalabilità automatica.