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 simultanee e le query complesse possono essere eseguite più velocemente.
Prezzi on demand e basati sulla capacità
Sebbene tutte le query utilizzino gli 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, l'addebito viene effettuato utilizzando il modello on demand. Con questo modello, ti viene addebitato l'importo dei dati elaborati (misurato in TiB) da ogni query. I progetti che utilizzano il modello on demand sono soggetti a limiti di slot per progetto e per organizzazione con capacità di burst transitorio. La maggior parte degli utenti del modello on demand ritiene che i limiti di capacità degli slot siano più che sufficienti. Tuttavia, a seconda del carico di lavoro, l'accesso a più slot potrebbe migliorare il rendimento delle query. Per controllare l'utilizzo degli slot del tuo account, consulta Monitorare l'integrità, l'utilizzo delle risorse e i job.
Con il modello basato sulla capacità, paghi la capacità degli slot allocata per le tue query nel tempo. Questo modello ti offre il 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 base che viene sempre allocato o come importo con scalabilità automatica, che viene allocato quando necessario. Le prenotazioni con slot di scalabilità automatica scalano la capacità per soddisfare le esigenze del tuo carico di lavoro. BigQuery alloca gli slot in base alle modifiche dei carichi di lavoro. In questo modo puoi configurare il numero di slot in una prenotazione in base alle prestazioni o alla natura critica del workload che utilizza la prenotazione.
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 trasferiti tra le fasi utilizzando un'architettura di rimescolamento distribuito, che viene discussa in modo più dettagliato in questo Google Cloud post del blog.
L'esecuzione delle query BigQuery è dinamica. Un piano di query può essere modificato mentre la query viene elaborata. La distribuzione del lavoro può essere ottimizzata per la distribuzione dei dati man mano che vengono aggiunte le fasi. Inoltre, la capacità di esecuzione di una query può cambiare quando altre query iniziano o terminano oppure 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 slot
Se una query richiede più slot di quelli disponibili, BigQuery mette in coda singole unità di lavoro 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 per cui hai preso un impegno, non ti vengono addebitati slot aggiuntivi e non ti vengono addebitate tariffe on demand aggiuntive. Le tue singole unità di lavoro vengono messe in coda.
Ad esempio,
- Una fase della 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 carico di lavoro richiede più slot di quelli disponibili per la prenotazione, il tempo di esecuzione del job può aumentare man mano che i job attendono che gli slot diventino disponibili. Questo è noto come contesa degli slot. La contesa degli slot può aumentare se la domanda del carico di lavoro è molto superiore agli slot disponibili per la prenotazione.
Priorità della capacità
Quando BigQuery registra una domanda elevata di risorse di slot in una regione specifica, gestisce la contesa dando la priorità alla capacità. Questa priorità garantisce che i clienti con modelli di capacità di livello superiore siano meno interessati. Il sistema assegna 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.
- Versione Standard e capacità on demand.
In caso di contesa in una regione, è più probabile che le richieste di capacità Standard edition e on demand subiscano 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 BigQuery applica la condivisione equa degli slot tra i progetti con query in esecuzione all'interno di una prenotazione e poi all'interno dei job di un determinato progetto. Lo scheduler garantisce l'equità nel tempo. Durante brevi periodi, alcuni job potrebbero ottenere una quota sproporzionata di slot, ma lo scheduler alla fine corregge questo problema. Lo scopo dello scheduler è trovare un equilibrio tra l'eliminazione aggressiva delle attività in esecuzione (che comporta lo spreco di tempo di slot) e l'eccessiva indulgenza (che comporta che i job con attività a esecuzione prolungata ottengano una quota sproporzionata del tempo di slot).
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 vengono inviate nuove query per l'esecuzione alle seguenti condizioni:
- Ogni volta che viene inviata una nuova query, la capacità viene automaticamente riassegnata alle query in esecuzione. Le singole unità di lavoro possono essere sospese, 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 questa query diventa immediatamente disponibile per 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, con una pianificazione equa, tutti gli slot possano essere utilizzati completamente in qualsiasi momento.
Se un job importante ha costantemente bisogno di più slot di quelli che riceve dallo scheduler, valuta la possibilità di creare una prenotazione aggiuntiva con il numero richiesto di slot e di assegnare il job a questa 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 - Progetto
Ae progettoB, assegnati alla prenotazione
Scenario 1: nel progetto A esegui la query A (una query simultanea) che richiede un utilizzo elevato degli slot e nel progetto B esegui 20 query simultanee. Anche se ci sono un totale di 21 query che utilizzano 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 20 query.
Al contrario, considera la seguente configurazione della prenotazione:
- Prenotazione
B, che ha 1000 slot di base senza scalabilità automatica. - 10 progetti, tutti assegnati alla prenotazione
B.
Supponiamo che i 10 progetti eseguano query con una domanda di slot sufficiente, quindi ogni progetto riceve 1/10 degli slot di prenotazione totali (o 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 salvaguardia per BigQuery. I diversi modelli di prezzo utilizzano tipi di quota slot diversi, come segue:
Modello di prezzi on demand: sei soggetto a un limite di slot per progetto e organizzazione con capacità di burst temporaneo. A seconda dei tuoi workload, l'accesso a più slot può migliorare il rendimento 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 sull'aumento della quota di slot, consulta la pagina Richiesta di aumento della quota.
Per verificare quanti slot stai utilizzando, consulta la sezione Monitoraggio di BigQuery.
Slot inattivi
In un dato momento, alcuni slot potrebbero essere inattivi. Questi possono includere:
- Impegni slot non allocati a nessuna base di riferimento per le prenotazioni.
- Slot allocati a una base di riferimento della prenotazione, ma non in uso.
Gli slot inattivi non sono applicabili quando si utilizza il modello di prezzo on demand.
Per impostazione predefinita, le query eseguite in una prenotazione utilizzano automaticamente gli slot inattivi di altre prenotazioni all'interno della stessa regione e dello stesso progetto amministratore. BigQuery alloca immediatamente gli slot inattivi a una prenotazione assegnata quando sono necessari. Gli slot inattivi utilizzati da un'altra prenotazione vengono rapidamente preempted se richiesto dalla prenotazione originale. Potrebbe verificarsi un breve periodo di tempo in cui il consumo totale di slot supera il massimo che hai specificato in tutte le prenotazioni, ma non ti viene addebitato questo utilizzo aggiuntivo degli slot.
Ad esempio, supponiamo di avere 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.
Hai corso query_b in project_b. Se non è in esecuzione alcuna query in project_a, allora
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 500 slot di base riservati per
project_a,query_ainizia immediatamente e gli vengono assegnati 500 slot. - Il numero di slot allocati 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 essere avviate, 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'inizio 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 verranno messe in coda
finché non saranno disponibili slot inattivi.
Per assicurarti che una prenotazione utilizzi solo gli slot di cui è stato eseguito il provisioning, imposta ignore_idle_slots su true. Tuttavia, le prenotazioni con ignore_idle_slots impostato su true possono condividere i propri slot inattivi con altre prenotazioni.
Non puoi condividere slot inattivi tra prenotazioni di versioni diverse. Puoi condividere solo gli slot di base o gli slot impegnati. Gli slot scalati automaticamente potrebbero essere temporaneamente disponibili, ma non sono condivisibili come slot inattivi per altre prenotazioni perché potrebbero essere ridotti.
Finché ignore_idle_slots è false, una prenotazione può avere un conteggio di slot pari a
0 e avere comunque accesso agli slot inutilizzati. Se utilizzi solo la default
prenotazione, disattiva ignore_idle_slots come best practice. Puoi
quindi assegnare un progetto o
una cartella
a quella prenotazione e utilizzerà solo gli slot inattivi.
Compiti di tipo ML_EXTERNAL sono un'eccezione in quanto gli slot utilizzati dai job di creazione di modelli esterni BigQuery ML non sono prerilasciabili. Gli slot in una prenotazione con tipi di assegnazione sia ML_EXTERNAL che QUERY sono disponibili per altri job di query solo quando gli slot non sono occupati dai job ML_EXTERNAL. Inoltre, questi job non possono utilizzare gli slot inattivi di altre
prenotazioni.
Equità basata sulla prenotazione
Con la distribuzione equa basata sulla prenotazione, BigQuery assegna la priorità e alloca gli slot inattivi in modo equo a tutte le prenotazioni all'interno dello stesso progetto amministrativo, 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 all'interno dei progetti. Questa funzionalità è supportata solo con le versioni Enterprise o Enterprise Plus.
Il seguente grafico mostra come vengono distribuiti gli slot inattivi senza l'equità basata sulla prenotazione:
In questo grafico, gli slot inattivi vengono condivisi equamente tra i progetti.
Se l'equità basata sulla prenotazione non è attivata, gli slot inattivi disponibili vengono distribuiti equamente tra i progetti all'interno delle prenotazioni.
Il seguente grafico mostra come vengono distribuiti gli slot inattivi con l'equità basata sulla prenotazione attivata:
In questo grafico, gli slot inattivi vengono condivisi equamente tra le prenotazioni, non tra i progetti.
Con l'equità basata sulla prenotazione 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 a priorità inferiore perché gli slot possono essere interrotti in qualsiasi momento.
Scalabilità automatica degli slot
La sezione seguente descrive gli slot di scalabilità automatica e il loro funzionamento con le prenotazioni.
Utilizzare le prenotazioni di 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 a una 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 a eventuali slot di riferimento facoltativi assegnati alla prenotazione.
Quando crei prenotazioni di 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 a un multiplo di 50.
- Lo scale up si basa sull'utilizzo effettivo e viene arrotondato all'incremento di 50 slot più vicino.
- Gli slot scalati automaticamente vengono addebitati in base ai prezzi di calcolo della capacità per la tua edizione associata durante lo scale up. Ti viene addebitato il numero di slot scalati, non 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 lavori 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 per multipli di 50, potrebbe essere scalato di più di 50 slot in un solo 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à (soggetto a un minimo di 1 minuto).
La capacità di scalabilità automatica viene mantenuta per almeno 60 secondi. Questo periodo di 60 secondi è chiamato finestra di riduzione. Qualsiasi nuovo picco di capacità reimposta la finestra di riduzione, 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 riduzione della scalabilità, consentendo riduzioni consecutive senza un ritardo imposto.
Ad esempio, se la capacità del workload iniziale viene scalata a 100 slot, il picco viene mantenuto per almeno 60 secondi. Se, durante questo periodo di riduzione, il tuo carico di lavoro viene scalato a un nuovo picco di 200 slot, inizia un nuovo periodo di riduzione di 60 secondi. Se non si verifica un nuovo picco durante questa finestra di riduzione, il tuo workload inizia a ridursi 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. Il picco viene mantenuto per almeno 60 secondi, a partire dalle ore 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 è di 0 slot, BigQuery esegue di nuovo immediatamente lo scale down a 0 slot. Al termine del periodo di riduzione, BigQuery può ridurre le risorse più volte di seguito senza richiedere un nuovo periodo di riduzione.
Per scoprire come utilizzare la scalabilità automatica, consulta Utilizzare gli slot di scalabilità automatica.
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. La base di riferimento è il numero minimo di slot che verranno sempre assegnati alla prenotazione e ti verranno sempre addebitati. Gli slot di scalabilità automatica vengono aggiunti solo dopo che sono stati utilizzati tutti gli slot di base (e gli slot inattivi, se applicabili). 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. Se vuoi ridurre gli slot di base, puoi farlo solo una volta all'ora se hai modificato di recente la capacità degli slot di base e questi superano gli slot impegnati. In caso contrario, puoi diminuire gli slot di base ogni pochi minuti.
Gli slot di riferimento e di scalabilità automatica sono pensati per fornire capacità in base al tuo workload recente. Se prevedi un workload di grandi dimensioni molto diverso da quelli del recente passato, ti consigliamo di aumentare la capacità di base prima dell'evento anziché fare affidamento sugli slot di scalabilità automatica per coprire la capacità del workload. Se riscontri un problema con l'aumento della capacità di base, riprova a inviare la richiesta dopo 15 minuti.
Se la prenotazione non ha 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 base devono essere utilizzati completamente prima dello scaling.
Le prenotazioni utilizzano e aggiungono slot con la priorità seguente:
- Slot di riferimento.
- Condivisione di slot inattivi (se abilitata). Le prenotazioni possono condividere solo slot di base inattivi o impegnati di altre prenotazioni create con la stessa edizione e la stessa regione.
- Slot a scalabilità automatica.
Nell'esempio seguente, gli slot vengono scalati da un importo di base specificato. Le prenotazioni
etl e dashboard hanno una dimensione di base di 700 e 300 slot
rispettivamente.
In questo esempio, la prenotazione etl può essere scalata a 1300 slot (700 slot di base
più 600 slot di 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 di riferimento più 800 slot di 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 in
ordine:
- 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. - Aumento di 600 slot aggiuntivi fino alla dimensione massima della prenotazione.
Utilizzo degli impegni slot
L'esempio seguente mostra gli slot di scalabilità automatica che utilizzano gli impegni di capacità.
Come le baseline di prenotazione, gli impegni di 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 addebitato l'importo alla tariffa di scalabilità automatica per il numero di slot di scalabilità automatica dopo l'attivazione della scalabilità automatica e le prenotazioni sono in uno stato di scalabilità aumentata. Per la tariffa di scalabilità automatica, ti viene addebitato il numero di slot scalati, non il numero di slot utilizzati.
L'esempio seguente mostra le prenotazioni quando il numero di slot di base supera il numero di slot di impegno.
In questo esempio, ci sono 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 sommando gli slot di riferimento, il numero massimo di slot con scalabilità automatica e gli slot negli impegni creati con la stessa edizione e non coperti dagli slot di riferimento. L'esempio nell'immagine precedente è 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 a scalabilità automatica di 800 per la prenotazione
dashboard.
Per la prenotazione etl, il numero massimo di slot possibili è uguale a
gli 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). Quindi, 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 di scalabilità automatica).
- 1000 slot di riferimento assegnati alla prenotazione
etl.
Il numero massimo di slot disponibili per la prenotazione è uguale agli slot di base (1000) più gli 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 potenziale di slot in questa prenotazione è 2100. Gli slot con scalabilità automatica sono slot aggiuntivi rispetto all'impegno di capacità.
Best practice per la scalabilità automatica
Quando utilizzi per la prima volta il gestore della scalabilità automatica, imposta il numero di slot di scalabilità automatica su un numero significativo in base al rendimento passato e previsto. Una volta creata la prenotazione, monitora attivamente il tasso di errore, il rendimento e la fattura e regola il numero di slot di scalabilità automatica in base alle esigenze.
Il gestore della scalabilità automatica ha un minimo di 1 minuto prima di ridurre la scalabilità, quindi è importante impostare il numero massimo di slot scalati automaticamente per bilanciare prestazioni e costi. Se il numero massimo di slot a scalabilità automatica è troppo elevato e il job può utilizzare tutti gli slot per completare un job in pochi secondi, i costi per gli slot massimi vengono comunque addebitati 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 nella determinazione dei requisiti degli slot, vedi Monitorare il rendimento del job. Per un approccio alternativo alla determinazione dei requisiti degli slot, consulta Visualizzare i consigli sugli slot delle versioni.L'utilizzo degli slot può occasionalmente superare la somma degli slot di base più quelli scalati. Non ti viene addebitato l'utilizzo di slot superiore alla base di riferimento più gli slot scalati.
Il gestore della scalabilità automatica è più efficiente per i carichi di lavoro pesanti e di lunga durata, ad esempio i carichi di lavoro con più query simultanee. Evita di inviare query una alla volta, poiché ogni query scala la prenotazione in cui rimarrà scalata per un minimo di 1 minuto. Se invii continuamente query, causando un carico di lavoro costante, l'impostazione di una baseline 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. Per ottenere garanzie di capacità, puoi impostare una base di slot facoltativa, ovvero il numero di slot garantiti in una prenotazione. Con le baseline, gli slot sono immediatamente disponibili e li paghi indipendentemente dal fatto che li utilizzi 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 di avere un impegno di 1 anno con 100 slot e una prenotazione con 100 slot di base. L'impegno scade e non prevede un piano di rinnovo. Una volta scaduto l'impegno, paghi 100 slot di base alla tariffa pay as you go.
Monitora la scalabilità automatica
Per informazioni sul monitoraggio dell'utilizzo degli slot e delle prestazioni dei job con la scalabilità automatica, vedi Monitorare la scalabilità automatica.
Utilizzo eccessivo degli slot
Quando un job mantiene gli slot troppo a lungo, può ricevere una quota ingiusta di slot. Per evitare ritardi, BigQuery consente ad altri job di prendere in prestito slot aggiuntivi, con conseguenti periodi di utilizzo totale degli slot superiore alla capacità specificata. L'utilizzo degli slot in eccesso viene attribuito solo ai job che ricevono una quota superiore a quella equa.
Gli slot in eccesso non ti vengono addebitati direttamente. I job continuano a essere eseguiti e ad accumulare l'utilizzo degli slot in modo equo finché tutto l'utilizzo in eccesso non viene coperto dalla capacità allocata. Gli slot in eccesso sono esclusi dall'utilizzo degli slot segnalato, ad eccezione di alcune statistiche di esecuzione dettagliate.
Tieni presente che è possibile che si verifichi un prestito preventivo di slot per ridurre i ritardi futuri e fornire altri vantaggi, come una variabilità ridotta dei costi degli slot e una latenza della coda ridotta. Il prestito di slot è limitato a una piccola frazione della capacità totale degli slot.