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, impegni di capacità, contesa degli slot e monitoraggio delle prenotazioni.

Per visualizzare e gestire prenotazioni, impegni e grafici delle risorse amministrative, assicurati di disporre dei ruoli Identity and Access Management (IAM) 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).

Eseguire query sulle tabelle BigQuery Omni

Quando esegui una query su una tabella BigQuery Omni, assicurati di creare la prenotazione nella stessa regione della tabella, non in una regione colocalizzata. Se crei la prenotazione nella regione BigQuery colocalizzata, la query viene eseguita utilizzando i prezzi on demand.

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.

Tipi di modelli BigQuery ML che utilizzano servizi esterni

Se nel progetto non viene trovato alcun assegnazione di prenotazione con un tipo di prestazione ML_EXTERNAL, i job di creazione di modelli esterni vengono eseguiti utilizzando i prezzi on demand. L'assegnazione del tipo di prestazione QUERY si applica ai modelli BigQuery ML standard e ai modelli di fattorizzazione matriciale (che richiedono una prenotazione di Enterprise o Enterprise Plus), mentre i modelli esterni richiedono un'assegnazione ML_EXTERNAL. Per saperne di più, consulta Assegnare slot ai carichi di lavoro BigQuery.

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.

Risolvi i problemi relativi agli impegni di capacità

Questa sezione descrive i passaggi per la risoluzione dei problemi che potrebbero esserti utili in caso di problemi con gli impegni di capacità BigQuery.

Gli slot acquistati sono in attesa

Gli slot sono soggetti alla capacità disponibile. Quando acquisti impegni di slot e BigQuery li alloca, la colonna Stato mostra un segno di spunta. Se BigQuery non riesce ad allocare subito gli slot richiesti, la colonna Stato rimane in attesa. Potresti dover attendere diverse ore prima che gli slot diventino disponibili. Se hai bisogno di accedere agli slot prima, prova a seguire questi passaggi:

  1. Elimina l'impegno in attesa.
  2. Acquista un nuovo impegno per un numero inferiore di slot. A seconda della capacità, l'impegno più piccolo potrebbe diventare attivo immediatamente.
  3. Acquista gli slot rimanenti come impegno separato. Questi slot potrebbero essere visualizzati come in attesa nella colonna Stato, ma in genere diventano attivi entro poche ore.
  4. (Facoltativo) Quando entrambi gli impegni diventano attivi, uniscili in un unico impegno, a condizione che entrambi gli impegni si trovino nella stessa regione e nella stessa edizione e abbiano lo stesso piano di impegno.

Se un impegno di slot non va a buon fine o richiede molto tempo per essere completato, valuta la possibilità di utilizzare temporaneamente i prezzi on demand. Con questa soluzione, puoi eseguire query critiche in un progetto diverso non assegnato ad alcuna prenotazione, assegnare il progetto a None o rimuovere del tutto l'assegnazione del progetto.

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=true può 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 hanno ignore_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 con ignore_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 50 lent_slots per la prenotazione A e 50 borrowed_slots per 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 con ignore_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