Risolvi i problemi relativi alla gestione dei workload BigQuery
Questo documento mostra come risolvere i problemi comuni relativi alla gestione dei workload BigQuery, tra cui allocazione e assegnazioni delle prenotazioni, errori di configurazione delle prenotazioni, contesa degli slot e monitoraggio delle prenotazioni.
Per visualizzare e gestire le prenotazioni e i grafici delle risorse amministrative, assicurati di disporre dei ruoli IAM (Identity and Access Management) richiesti, ad esempio il ruolo Visualizzatore risorse BigQuery (roles/bigquery.resourceViewer) o Amministratore risorse BigQuery (roles/bigquery.resourceAdmin) nel progetto di amministrazione. Per saperne di più, consulta Controllo dell'accesso con IAM.
Risolvere i problemi relativi alle prenotazioni
Utilizza le seguenti informazioni per risolvere i problemi comuni relativi alle prenotazioni, ad esempio gli errori durante l'aggiunta di slot, il motivo per cui una prenotazione non viene utilizzata per un job BigQuery o le prenotazioni non riconosciute.
Impossibile aggiungere altri slot alle dimensioni della prenotazione
Se si verificano errori come Failed to allocate slots for reservation in the
current system state o Failed to update reservation: Failed to allocate slots
for reservation quando tenti di aggiungere altri posti alla prenotazione, in genere si tratta di un problema temporaneo. Per risolvere il problema:
- Riprova con un numero inferiore di slot.
- Se il tentativo con un numero inferiore di slot non va a buon fine, attendi 15 minuti e riprova a eseguire l'operazione.
Se dopo aver riprovato più volte e atteso 30 minuti continui a ricevere lo stesso errore, contatta l'assistenza clienti Google Cloud.
La quota non è sufficiente per completare questa richiesta
Se il messaggio di errore indica There is insufficient quota to complete this
request, la richiesta supera il limite di quota impostato per il progetto.
Per risolvere questo errore, esegui una delle seguenti operazioni:
- Aggiungi un numero inferiore di slot alla prenotazione in modo che la richiesta non superi il limite di quota.
- Richiedi un aumento della quota nella regione corrispondente. Per ulteriori informazioni, vedi Richiedere un aumento della quota.
Prenotazione non utilizzata da BigQuery per eseguire un job
Esistono diversi scenari in cui un job potrebbe essere eseguito utilizzando prezzi on demand o un pool di slot condiviso senza costi anziché utilizzare la prenotazione che hai creato.
La query e la prenotazione si trovano in regioni diverse
Le prenotazioni sono risorse regionali. Una query viene eseguita nella stessa località di tutte le tabelle a cui fa riferimento.
Se la posizione di una tabella non corrisponde a quella della prenotazione, la query non utilizza la prenotazione e viene eseguita utilizzando i prezzi on demand (o il pool di slot condivisi senza costi per i job di caricamento ed esportazione batch idonei).
La prenotazione è stata creata, ma il progetto non è stato assegnato
Per utilizzare gli slot in una prenotazione, devi creare un'assegnazione che assegni il progetto, la cartella o l'organizzazione alla prenotazione specifica. Assicurati che il progetto abbia un'assegnazione corrispondente per la prenotazione.
Mancata corrispondenza del tipo di prestazione
Assicurati di selezionare il tipo di prestazione corretto quando crei un'assegnazione, altrimenti i job non utilizzano la prenotazione.
Ad esempio, se selezioni PIPELINE come tipo di prestazione, tutti i job di query vengono eseguiti utilizzando
i prezzi on demand. Modifica il tipo di assegnazione in QUERY per fare in modo che i job di query
vengano eseguiti utilizzando la prenotazione.
Query con più istruzioni
Se esegui query multi-istruzione, l'oggetto job principale non ha una prenotazione associata, anche se i job secondari vengono eseguiti nell'ambito di una prenotazione.
Per verificare se il job ha effettivamente utilizzato una prenotazione, controlla i metadati del job secondario.
Recupero dei risultati memorizzati nella cache
Quando un job di query recupera i risultati memorizzati nella cache, il campo di prenotazione è vuoto perché BigQuery non esegue alcun calcolo e recupera i risultati direttamente dalla tabella temporanea.
Operazioni di modifica delle righe di Change Data Capture (CDC)
Se hai
tabelle Change Data Capture (CDC),
BigQuery applica le modifiche alle righe in attesa nell'intervallo
max_staleness come job in background che utilizzano il tipo di assegnazione
BACKGROUND. Se non sono presenti assegnazioni BACKGROUND, questi job utilizzano i prezzi on demand. Valuta la possibilità di creare un'assegnazione BACKGROUND per il progetto per evitare costi on demand imprevisti. Puoi identificare questi job dalla sottostringa
queueworker_cdc_background_merge_coalesce nell'identificatore del job.
Prenotazioni non riconosciute identificate nel progetto
BigQuery è proprietario delle prenotazioni che rappresentano un pool di slot condivisi senza costi per determinate operazioni in BigQuery.
default-pipeline
Per impostazione predefinita, il caricamento o l'esportazione batch dei dati in BigQuery utilizza un pool di slot condivisi senza costi. Quando esamini questi job di caricamento o estrazione, il
campo di prenotazione mostra default-pipeline.
Non sono previsti costi per l'utilizzo del pool di slot condiviso. Se vuoi un rendimento costante e prevedibile, valuta l'acquisto di una prenotazione PIPELINE.
Risolvi i problemi relativi alle attività di gestione delle prenotazioni
Potresti riscontrare i seguenti errori durante la creazione o l'aggiornamento di una prenotazione.
Le dimensioni della prenotazione o gli slot di riferimento devono essere un multiplo di 50
Messaggio di errore
Max reservation size can only be configured in multiples of 50, except when covered by excess commitments.Baseline slots can only be configured in multiples of 50, except when covered by excess commitments.
Causa
Gli slot vengono sempre scalati automaticamente a un multiplo di 50. BigQuery aumenta gli slot in base all'utilizzo effettivo e arrotonda all'incremento di 50 slot più vicino. Quando non è presente alcun impegno o se l'impegno non può coprire gli aumenti, puoi aumentare gli slot di base e di scalabilità automatica solo in multipli di 50.
Se baseline slots o max reservation size - baseline slots non è un multiplo
di 50 (e non è coperto da impegni di capacità in eccesso), la prenotazione
non può fare lo scale up fino alla dimensione massima della prenotazione, causando questo errore.
Risoluzione
Esegui una delle seguenti operazioni:
- Acquista altri impegni di capacità per coprire gli aumenti degli slot.
- Scegli slot di base e massimi che siano incrementi di 50.
Risolvere i problemi di contesa slot
La contesa degli slot può verificarsi quando non ci sono slot sufficienti per eseguire tutti i tuoi job, causando problemi di prestazioni. Per analizzare se il peggioramento delle prestazioni deriva da aumenti del carico di lavoro o da modifiche alla configurazione dell'ambiente, puoi confrontare due intervalli di sistema tra prenotazioni e progetti.
Per risolvere i problemi di contesa degli slot, segui i passaggi e le best practice riportati di seguito.
Se hai provato queste best practice, ma continui a riscontrare problemi di rendimento dei job, puoi richiedere assistenza.
Picchi di concorrenza job
Utilizza la visualizzazione dettagliata nei grafici delle risorse amministrative per verificare un aumento improvviso delle esecuzioni dei job con picchi simultanei di utilizzo degli slot. Questi picchi possono indicare che troppi job competono per gli slot disponibili nella prenotazione.
Best practice: valuta la possibilità di ottimizzare le query che richiedono molte risorse o di aumentare la capacità degli slot della prenotazione. Per ulteriori informazioni sull'ottimizzazione delle prestazioni delle query, consulta Ottimizza il calcolo delle query.
Utilizzo elevato degli slot
Utilizza la visualizzazione dettagliata per verificare l'aumento della durata dei job, soprattutto se ci sono job che superano la capacità massima della prenotazione. Un utilizzo degli slot costantemente elevato può indicare una contesa in corso degli slot.
Best practice: controlla le query utilizzando il filtro contesa degli slot di Esplora job per identificare le query che consumano più slot e ottimizzarle.
Durate job lunghe
Se i job richiedono molto più tempo per essere completati, controlla la visualizzazione dettagliata. Picchi elevati di contemporaneità dei job e utilizzo degli slot possono indicare una contesa degli slot.
Best practice: isola i job critici mettendo in pausa temporaneamente i job meno importanti o riducendo la velocità complessiva di invio dei job.
Messaggi di contesa slot
La tabella degli approfondimenti può
mostrare messaggi come There were NUMBER jobs detected with
slot_contention in the reservation. che indicano problemi di contesa degli slot.
Controlla l'explorer dei job per esaminare i dettagli
dei job specifici segnalati in questi messaggi.
Best practice: ottimizza le query identificate o modifica l'allocazione degli slot della prenotazione.
Risolvi i problemi relativi al monitoraggio delle prenotazioni
Le sezioni seguenti descrivono come risolvere i problemi comuni durante il monitoraggio dell'utilizzo degli slot e delle prenotazioni BigQuery.
Le metriche sull'utilizzo degli slot non corrispondono a INFORMATION_SCHEMA
Se riscontri discrepanze tra le metriche di utilizzo degli slot nei grafici delle risorse
e i dati di INFORMATION_SCHEMA, prova a procedere nel seguente modo:
- Riduci la granularità. Modifica la granularità del grafico in intervalli di 1 secondo anziché in intervalli di 1 ora.
- Allinea l'aggregazione. Assicurati di utilizzare metodi di aggregazione che
siano allineati tra i grafici delle risorse e i dati
INFORMATION_SCHEMA. Ad esempio, per riflettere meglio l'utilizzo di picco nei grafici delle risorse, modifica l'aggregazione delle metriche in p99 o p90 in modo coerente.
Gli slot presi in prestito vengono visualizzati quando gli slot inattivi sono disabilitati
I grafici di monitoraggio potrebbero mostrare un valore diverso da zero per borrowed_slots anche se
ignore_idle_slots=true è impostato per una o più prenotazioni. Questa impostazione
impedisce a una prenotazione di prendere in prestito slot inattivi, ma non le impedisce
di prestare i suoi slot inutilizzati ad altre prenotazioni.
Questi slot presi in prestito vengono visualizzati nei seguenti casi:
Prestito ad altre prenotazioni. Una prenotazione con
ignore_idle_slots=truepuò prestare i suoi slot di base inutilizzati ad altre prenotazioni nello stesso progetto di amministrazione, nella stessa regione e nella stessa edizione che consentono il prestito di slot inattivi (ignore_idle_slots=false). Se tutte le prenotazioni in un progetto di amministrazione, una regione e un'edizione hannoignore_idle_slots=true, gli slot inattivi non vengono condivisi tra loro.Ad esempio, supponiamo che la prenotazione A abbia 100 slot, 0 utilizzo e sia configurata con
ignore_idle_slots=true. La prenotazione B si trova nello stesso progetto di amministrazione, nella stessa regione e nella stessa edizione, ha 100 slot, ne richiede 150 per il suo workload ed è configurata conignore_idle_slots=false. La prenotazione B può prendere in prestito 50 slot inattivi dalla prenotazione A per soddisfare le proprie esigenze. In questo caso, i grafici di monitoraggio riportano 50lent_slotsper la prenotazione A e 50borrowed_slotsper la prenotazione B.Utilizzo superiore alla capacità. Se l'utilizzo degli slot di una prenotazione supera temporaneamente la sua capacità (base di riferimento + slot scalati automaticamente), i grafici di monitoraggio mostrano questa differenza come
borrowed_slots. Questo comportamento può verificarsi anche per prenotazioni conignore_idle_slots=true.
L'utilizzo degli slot può occasionalmente superare la somma degli slot di riferimento più quelli scalati. Non ti viene addebitato l'utilizzo di slot superiore alla base più gli slot scalati.
Gli slot presi in prestito vengono visualizzati prima che una prenotazione venga utilizzata completamente
Le dashboard di monitoraggio utilizzano dati campionati, che potrebbero non riflettere con precisione la tempistica esatta dell'utilizzo degli slot all'interno di un intervallo di campionamento.
Per un'analisi più accurata dell'utilizzo degli slot, esegui query sulle colonne relative agli slot inattivi, ad esempio le colonne borrowed_slots e lent_slots nella vista INFORMATION_SCHEMA.RESERVATIONS_TIMELINE.
Passaggi successivi
- Scopri di più sulle differenze di BigQuery in Cloud de Confiance rispetto a Google Cloud.
- Scopri di più sulla gestione dei carichi di lavoro tramite le prenotazioni.
- Scopri come gestire le prenotazioni dei carichi di lavoro.
- Scopri come monitorare le prenotazioni e utilizzare i grafici delle risorse amministrative.
- Esplora altre risorse per la risoluzione dei problemi di BigQuery.