Risolvi i problemi relativi a quote e limiti
BigQuery prevede varie quote e limiti che limitano la frequenza e il volume di richieste e operazioni diverse. Sono presenti sia per proteggere l'infrastruttura sia per difendersi da un utilizzo imprevisto da parte dei clienti. Questo documento descrive come diagnosticare e mitigare errori specifici derivanti da quote e limiti.
Se il messaggio di errore non è elencato in questo documento, consulta l'elenco dei messaggi di errore, che contiene informazioni più generiche sugli errori.
Panoramica
Se un'operazione di BigQuery non va a buon fine a causa del superamento di una quota, l'API restituisce il codice di stato HTTP 403 Forbidden
. Il corpo della risposta contiene ulteriori informazioni sulla quota raggiunta. Il corpo della risposta avrà il seguente aspetto:
{
"code" : 403,
"errors" : [ {
"domain" : "global",
"message" : "Quota exceeded: ...",
"reason" : "quotaExceeded"
} ],
"message" : "Quota exceeded: ..."
}
Il campo message
nel payload descrive quale limite è stato superato. Ad esempio, il contenuto del campo message
potrebbe essere Exceeded rate limits: too many table
update operations for this table
.
In generale, i limiti di quota si suddividono in due categorie, indicate dal campo reason
nel payload della risposta.
rateLimitExceeded
. Questo valore indica un limite a breve termine. Per risolvere questi problemi relativi ai limiti, riprova a eseguire l'operazione dopo pochi secondi. Utilizza il backoff esponenziale tra i nuovi tentativi. In altre parole, aumenta in modo esponenziale il ritardo tra un nuovo tentativo e l'altro.quotaExceeded
. Questo valore indica un limite a lungo termine. Se raggiungi un limite di quota a lungo termine, devi attendere almeno 10 minuti prima di riprovare a eseguire l'operazione. Se raggiungi sistematicamente uno di questi limiti di quota a lungo termine, devi analizzare il tuo carico di lavoro per capire come risolvere il problema. Le mitigazioni possono includere l'ottimizzazione del carico di lavoro o la richiesta di aumento della quota.
Per gli errori quotaExceeded
, esamina il messaggio di errore per capire quale limite di quota è stato superato. Analizza quindi il carico di lavoro per capire se puoi evitare di raggiungere la quota.
In alcuni casi, la quota può essere aumentata contattando l'assistenza di BigQuery o contattando il team di vendita di Google Cloud, ma ti consigliamo di provare prima i suggerimenti riportati in questo documento.
Diagnosi
Per diagnosticare i problemi:
Utilizza le viste
INFORMATION_SCHEMA
per analizzare il problema di fondo. Queste viste contengono metadati relativi alle tue risorse BigQuery, tra cui job, prenotazioni e inserimenti di flussi di dati.Ad esempio, la seguente query utilizza la vista
INFORMATION_SCHEMA.JOBS
per elencare tutti gli errori relativi alle quote del giorno precedente:SELECT job_id, creation_time, error_result FROM `region-us`.INFORMATION_SCHEMA.JOBS WHERE creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP, INTERVAL 1 DAY) AND error_result.reason IN ('rateLimitExceeded', 'quotaExceeded')
Visualizza gli errori in Cloud Audit Logs.
Ad esempio, utilizzando Esplora log, la seguente query restituisce errori con
Quota exceeded
olimit
nella stringa del messaggio:resource.type = ("bigquery_project" OR "bigquery_dataset") protoPayload.status.code ="7" protoPayload.status.message: ("Quota exceeded" OR "limit")
In questo esempio, il codice di stato
7
indicaPERMISSION_DENIED
, che corrisponde al codice di stato HTTP403
.Per altri esempi di query su Cloud Audit Logs, consulta le query BigQuery.
Errori relativi al limite della coda di query
Se un progetto tenta di mettere in coda più query interattive o batch rispetto al limite di coda consentito, potresti riscontrare questo errore.
Messaggio di errore
Quota exceeded: Your project and region exceeded quota for max number of jobs that can be queued per project.
Risoluzione
Per risolvere questo errore di quota:
Metti in pausa il job. Se identifichi un processo o un workflow responsabile di un aumento delle query, metti in pausa il processo o il workflow.
Utilizza i job con priorità in batch. Puoi mettere in coda più query collettive rispetto alle query interattive.
Distribuisci le query. Organizza e distribuisci il carico su diversi progetti in base alla natura delle query e alle esigenze della tua attività.
Distribuisci i tempi di esecuzione. Distribuisci il carico in un periodo di tempo più lungo. Se la tua soluzione di generazione di report deve eseguire molte query, prova a introdurre un po' di casualità per l'avvio delle query. Ad esempio, non avviare tutti i report contemporaneamente.
Utilizza BigQuery BI Engine. Se hai riscontrato questo errore durante l'utilizzo di uno strumento di business intelligence (BI) per creare dashboard che eseguono query sui dati in BigQuery, ti consigliamo di utilizzare BigQuery BI Engine. L'utilizzo di BigQuery BI Engine è ottimale per questo caso d'uso.
Ottimizza le query e il modello di dati. Spesso una query può essere riscritta in modo da essere eseguita in modo più efficiente. Ad esempio, se la query contiene una clausola espressione della tabella comune (CTE)
WITH
a cui viene fatto riferimento in più di un punto della query, questo calcolo viene eseguito più volte. È meglio mantenere i calcoli eseguiti dalla CTE in una tabella temporanea e poi farvi riferimento nella query.Anche più join possono essere fonte di mancanza di efficienza. In questo caso, ti consigliamo di utilizzare le colonne nidificate e ripetute. Spesso, l'utilizzo di questo approccio migliora la località dei dati, elimina la necessità di alcuni join e riduce complessivamente il consumo di risorse e il tempo di esecuzione delle query.
Le query ottimizzate sono più economiche, quindi, se utilizzi i prezzi basati sulla capacità, puoi eseguire più query con gli slot. Per ulteriori informazioni, consulta Introduzione all'ottimizzazione del rendimento delle query.
Ottimizza il modello di query. BigQuery non è un database relazionale. Non è ottimizzato per un numero infinito di piccole query. L'esecuzione di un gran numero di piccole query esaurisce rapidamente le quote. Queste query non vengono eseguite in modo così efficiente come con i prodotti database più piccoli. BigQuery è un data warehouse di grandi dimensioni e questo è il suo caso d'uso principale. Offre il rendimento migliore con query analitiche su grandi quantità di dati.
Mantieni i dati (tabelle salvate). Elaborare in pre-elaborazione i dati in BigQuery e archiviarli in tabelle aggiuntive. Ad esempio, se eseguite molte query simili ad alta intensità di calcolo con condizioni
WHERE
diverse, i relativi risultati non vengono memorizzati nella cache. Inoltre, queste query consumano risorse ogni volta che vengono eseguite. Puoi migliorare le prestazioni di queste query e ridurre il tempo di elaborazione precomputando i dati e archiviandoli in una tabella. Questi dati precomputati nella tabella possono essere sottoposti a query tramite querySELECT
. Spesso può essere eseguita durante l'importazione all'interno del processo ETL o utilizzando query pianificate o visualizzazioni tabelle materializzate.Utilizza la modalità di prova. Esegui le query in modalità di prova, che stima il numero di byte letti, ma non elabora effettivamente la query.
Visualizza l'anteprima dei dati della tabella. Per eseguire esperimenti o esplorare i dati anziché eseguire query, visualizza l'anteprima dei dati della tabella con la funzionalità di anteprima della tabella di BigQuery.
Utilizza i risultati delle query memorizzati nella cache. Tutti i risultati delle query, incluse quelle interattive e collettive, vengono memorizzati nella cache in tabelle temporanee per circa 24 ore, con alcune eccezioni. Sebbene l'esecuzione di una query memorizzata nella cache conti comunque ai fini del limite di query contemporaneamente in esecuzione, le query che utilizzano i risultati memorizzati nella cache sono notevolmente più veloci di quelle che non li utilizzano perché BigQuery non deve calcolare il set di risultati.
Errori relativi alla quota del numero di modifiche delle partizioni per le tabelle partizionate per colonne
BigQuery restituisce questo errore quando la tabella partizionata per colonne reaggiunge la quota del numero di modifiche delle partizioni consentite al giorno. Le modifiche alle partizioni includono il totale di tutti i job di caricamento, i job di copia e i job di query che aggiungono dati a una partizione di destinazione o la sovrascrivono.
Per visualizzare il valore del limite Numero di modifiche alle partizioni per tabella partizionata per colonne al giorno, consulta Ttabelle partizionate.
Messaggio di errore
Quota exceeded: Your table exceeded quota for Number of partition modifications to a column partitioned table
Risoluzione
Questa quota non può essere aumentata. Per risolvere questo errore di quota:
- Modifica il partizionamento della tabella per avere più dati in ogni partizione, in modo da ridurre il numero totale di partizioni. Ad esempio, passa dalla partizione per giorno alla partizione per mese o modifica il modo in cui partizioni la tabella.
- Utilizza il clustering instead of partitioning.
-
Se carichi spesso dati da più file di piccole dimensioni archiviati in Cloud Storage che utilizzano un job per file, combina più job di caricamento in un unico job. Puoi caricare da più URI Cloud Storage con un elenco separato da virgole (ad es.
gs://my_path/file_1,gs://my_path/file_2
) o utilizzando caratteri jolly (ad es.gs://my_path/*
).Per ulteriori informazioni, consulta Caricare i dati in batch.
- Ad esempio, se utilizzi job di caricamento, selezione o copia per accodare singole righe di dati a una tabella, ti consigliamo di raggruppare più job in un unico job. BigQuery non ha un buon rendimento se utilizzato come database relazionale. Come best practice, evita di eseguire azioni di accodamento frequente con una sola riga.
- Per accodare i dati a una frequenza elevata, valuta la possibilità di utilizzare l'API BigQuery Storage Write. È una soluzione consigliata per l'importazione dati ad alte prestazioni. L'API BigQuery Storage Write offre funzionalità efficaci, tra cui la semantica di caricamento esattamente una volta. Per informazioni su limiti e quote, consulta API Storage Write e per conoscere i costi di utilizzo di questa API, consulta Prezzi di importazione dati BigQuery.
-
Per monitorare il numero di partizioni modificate in una tabella, utilizza la visualizzazione
INFORMATION_SCHEMA
.
Errori di quota relativi agli inserimenti di flussi di dati
Questa sezione fornisce alcuni suggerimenti per la risoluzione dei problemi relativi alle quote per i flussi di dati in BigQuery.
In alcune aree geografiche, gli inserimenti di flussi di dati hanno una quota maggiore se non immetti dati nel campo insertId
per ogni riga. Per ulteriori informazioni sulle quote per gli inserimenti di flussi di dati, consulta la pagina relativa agli Inserimento di flussi di dati.
Gli errori relativi alle quote per i flussi di dati di BigQuery dipendono dalla presenza o dall'assenza di un valore nel campo insertId
.
Messaggio di errore
Se il campo insertId
è vuoto, si può verificare il seguente errore di quota:
Limite quota | Messaggio di errore |
---|---|
Byte al secondo per progetto | La tua entità con ID GAIA GAIA_ID, progetto PROJECT_ID e area geografica REGION ha superato la quota di inserimento byte al secondo. |
Se il campo insertId
è compilato, si possono verificare i seguenti errori di quota:
Limite quota | Messaggio di errore |
---|---|
Righe al secondo per progetto | Il tuo progetto PROJECT_ID in REGION ha superato la quota per l'inserimento di righe di flussi di dati al secondo. |
Righe al secondo per tabella | La tua tabella TABLE_ID ha superato la quota per l'inserimento di righe di flussi di dati al secondo. |
Byte al secondo per tabella | La tua tabella TABLE_ID ha superato la quota per l'inserimento di byte di flussi di dati al secondo. |
Lo scopo del campo insertId
è deduplicare le righe inserite. Se arrivano più inserimenti con lo stesso insertId
nel giro di pochi minuti, BigQuery scrive un'unica versione del record. Tuttavia, questa deduplicazione automatica non è garantita. Per la massima velocità effettiva di trasmissione dei flussi di dati, ti consigliamo di non includere insertId
e di usare invece la deduplicazione manuale.
Per ulteriori informazioni, consulta la pagina relativa a come garantire la coerenza dei dati.
Quando riscontri questo errore, diagnosi il problema e poi segui i passaggi consigliati per risolverlo.
Diagnosi
Usa le viste STREAMING_TIMELINE_BY_*
per analizzare il traffico dei flussi di dati. Queste viste aggregano le statistiche relative ai flussi di dati in intervalli di un minuto, raggruppate per codice di errore. Gli errori di quota vengono visualizzati nei risultati con error_code
uguale a RATE_LIMIT_EXCEEDED
o QUOTA_EXCEEDED
.
A seconda del limite di quota specifico raggiunto, fai riferimento a total_rows
o total_input_bytes
. Se l'errore riguarda una quota a livello di tabella, filtra per table_id
.
Ad esempio, la seguente query mostra i byte totali importati al minuto e il numero totale di errori di quota:
SELECT
start_timestamp,
error_code,
SUM(total_input_bytes) as sum_input_bytes,
SUM(IF(error_code IN ('QUOTA_EXCEEDED', 'RATE_LIMIT_EXCEEDED'),
total_requests, 0)) AS quota_error
FROM
`region-us`.INFORMATION_SCHEMA.STREAMING_TIMELINE_BY_PROJECT
WHERE
start_timestamp > TIMESTAMP_SUB(CURRENT_TIMESTAMP, INTERVAL 1 DAY)
GROUP BY
start_timestamp,
error_code
ORDER BY 1 DESC
Risoluzione
Per risolvere questo errore di quota:
Se usi il campo
insertId
per la deduplicazione e il tuo progetto si trova in un'area geografica che supporta una quota per i flussi di dati maggiore, ti consigliamo di rimuovere il campoinsertId
. Questa soluzione potrebbe richiedere passaggi aggiuntivi per la deduplicazione manuale dei dati. Per ulteriori informazioni, vedi Rimozione manuale dei duplicati.Se non usi
insertId
, oppure non è possibile rimuoverlo, monitora il traffico dei flussi di dati per un periodo di 24 ore e analizza gli errori di quota:Se risultano soprattutto errori
RATE_LIMIT_EXCEEDED
anziché erroriQUOTA_EXCEEDED
e il traffico complessivo è inferiore all'80% della quota, gli errori indicano probabilmente picchi temporanei. Per risolvere questi errori, puoi eseguire nuovamente l'operazione usando il backoff esponenziale tra tentativi successivi.Se utilizzi un job Dataflow per inserire dati, valuta la possibilità di utilizzare job di caricamento anziché inserimenti streaming. Per ulteriori informazioni, vedi Impostare il metodo di inserimento. Se utilizzi Dataflow con un connettore I/O personalizzato, ti consigliamo di utilizzare un connettore I/O integrato. Per ulteriori informazioni, consulta Pattern di I/O personalizzati.
Se risultano errori
QUOTA_EXCEEDED
o il traffico complessivo supera costantemente l'80% della quota, invia una richiesta di aumento della quota. Per ulteriori informazioni, consulta Richiedere un limite di quota più alto.Ti consigliamo inoltre di sostituire gli inserimenti in streaming con la più recente API Storage Write, che offre un throughput più elevato, un prezzo inferiore e molte funzionalità utili.
Errori di quota relativi al caricamento di file CSV
Se carichi un file CSV di grandi dimensioni utilizzando il comando bq load
con il flag --allow_quoted_newlines
, potresti riscontrare questo errore.
Messaggio di errore
Input CSV files are not splittable and at least one of the files is larger than
the maximum allowed size. Size is: ...
Risoluzione
Per risolvere questo errore di quota:
- Imposta il flag
--allow_quoted_newlines
sufalse
. - Suddividi il file CSV in blocchi più piccoli di dimensioni inferiori a 4 GB.
Per ulteriori informazioni sui limiti che si applicano quando carichi dati in BigQuery, consulta Job di caricamento.
Le importazioni di tabelle o le query aggiungono errori di quota
BigQuery restituisce questo messaggio di errore quando la tabella raggiunge il limite di operazioni giornaliere per le tabelle standard. Le operazioni sulle tabelle includono il totale combinato di tutti i job di caricamento, i job di copia e i job di query che aggiungono dati a una tabella di destinazione o la sovrascrivono.
Per visualizzare il valore del limite Operazioni per tabella al giorno, consulta le tabelle standard.
Messaggio di errore
Your table exceeded quota for imports or query appends per table
Quando si verifica questo errore, diagnosi il problema e segui i passaggi consigliati per risolverlo.
Diagnosi
Se non hai identificato l'origine da cui ha avuto inizio la maggior parte delle operazioni sulle tabelle:
Prendi nota del progetto, del set di dati e della tabella in cui vengono scritti la query, il caricamento o il job di copia non riusciti.
Utilizza le tabelle
INFORMATION_SCHEMA.JOBS_BY_*
per scoprire di più sui job che modificano la tabella.Il seguente esempio trova il conteggio orario dei job raggruppati per tipo di job per un periodo di 24 ore utilizzando
JOBS_BY_PROJECT
. Se prevedi che più progetti scrivano nella tabella, sostituisciJOBS_BY_PROJECT
conJOBS_BY_ORGANIZATION
.SELECT TIMESTAMP_TRUNC(creation_time, HOUR), job_type, count(1) FROM `region-us`.INFORMATION_SCHEMA.JOBS_BY_PROJECT #Adjust time WHERE creation_time BETWEEN "2021-06-20 00:00:00" AND "2021-06-21 00:00:00" AND destination_table.project_id = "my-project-id" AND destination_table.dataset_id = "my_dataset" AND destination_table.table_id = "my_table" GROUP BY 1, 2 ORDER BY 1 DESC
Risoluzione
Questa quota non può essere aumentata. Per risolvere questo errore di quota:
-
Se carichi spesso dati da più file di piccole dimensioni archiviati in Cloud Storage che utilizzano un job per file, combina più job di caricamento in un unico job. Puoi caricare da più URI Cloud Storage con un elenco separato da virgole (ad es.
gs://my_path/file_1,gs://my_path/file_2
) o utilizzando caratteri jolly (ad es.gs://my_path/*
).Per ulteriori informazioni, consulta Caricare i dati in batch.
- Ad esempio, se utilizzi job di caricamento, selezione o copia per accodare singole righe di dati a una tabella, ti consigliamo di raggruppare più job in un unico job. BigQuery non ha un buon rendimento se utilizzato come database relazionale. Come best practice, evita di eseguire azioni di accodamento frequente con una sola riga.
- Per accodare i dati a una frequenza elevata, valuta la possibilità di utilizzare l'API BigQuery Storage Write. È una soluzione consigliata per l'importazione dati ad alte prestazioni. L'API BigQuery Storage Write offre funzionalità efficaci, tra cui la semantica di caricamento esattamente una volta. Per informazioni su limiti e quote, consulta API Storage Write e per conoscere i costi di utilizzo di questa API, consulta Prezzi di importazione dati BigQuery.
-
Per monitorare il numero di partizioni modificate in una tabella, utilizza la visualizzazione
INFORMATION_SCHEMA
.
Errori relativi al limite di frequenza massima delle operazioni di aggiornamento dei metadati delle tabelle
BigQuery restituisce questo errore quando la tabella raggiunge il limite per la frequenza massima delle operazioni di aggiornamento dei metadati delle tabelle per le tabelle standard.
Le operazioni sulle tabelle includono il totale combinato di tutti i job di caricamento,
job di copia e job di query
che aggiungono dati a una tabella di destinazione o la sovrascrivono o che utilizzano
un'istruzione DML DELETE
, INSERT
,
MERGE
, TRUNCATE TABLE
o UPDATE
per scrivere dati in una tabella.
Per visualizzare il valore del limite Frequenza massima delle operazioni di aggiornamento dei metadati delle tabelle per tabella, consulta Tabelle standard.
Messaggio di errore
Exceeded rate limits: too many table update operations for this table
Quando si verifica questo errore, diagnosi il problema e segui i passaggi consigliati per risolverlo.
Diagnosi
Gli aggiornamenti delle tabelle dei metadati possono provenire da chiamate API che modificano i metadati di una tabella o da job che modificano i contenuti di una tabella. Se non hai individuato l'origine da cui ha origine la maggior parte delle operazioni di aggiornamento dei metadati di una tabella, svolgi i seguenti passaggi:
Identificare le chiamate API
Vai al menu di navigazione Google Cloud > Esplora log:
e seleziona LoggingFiltra i log per visualizzare le operazioni sulle tabelle eseguendo la seguente query:
resource.type="bigquery_dataset" protoPayload.resourceName="projects/my-project-id/datasets/my_dataset/tables/my_table" (protoPayload.methodName="google.cloud.bigquery.v2.TableService.PatchTable" OR protoPayload.methodName="google.cloud.bigquery.v2.TableService.UpdateTable" OR protoPayload.methodName="google.cloud.bigquery.v2.TableService.InsertTable")
Identificare i job
La seguente query restituisce un elenco di job che modificano la tabella interessata nel progetto. Se prevedi che più progetti di un'organizzazione scrivano nella tabella, sostituisci JOBS_BY_PROJECT
con JOBS_BY_ORGANIZATION
.
SELECT
job_id,
user_email,
query
#Adjust region
FROM `region-us`.INFORMATION_SCHEMA.JOBS_BY_PROJECT
#Adjust time
WHERE creation_time BETWEEN "2021-06-21 10:00:00" AND "2021-06-21 20:00:00"
AND destination_table.project_id = "my-project-id"
AND destination_table.dataset_id = "my_dataset"
AND destination_table.table_id = "my_table"
Per ulteriori informazioni, consulta la panoramica dei log di controllo di BigQuery.
Risoluzione
Questa quota non può essere aumentata. Per risolvere questo errore di quota:
- Riduci la frequenza di aggiornamento dei metadati della tabella.
- Aggiungi un ritardo tra i job o le operazioni sulle tabelle per assicurarti che la frequenza di aggiornamento sia entro il limite.
Per l'inserimento o la modifica dei dati, valuta la possibilità di utilizzare le operazioni DML. Le operazioni DML non sono interessate dal limite di frequenza Frequenza massima delle operazioni di aggiornamento dei metadati delle tabelle per tabella.
Le operazioni DML hanno altri limiti e quote. Per ulteriori informazioni, consulta Utilizzo di DML (Data Manipulation Language).
-
Se carichi spesso dati da più file di piccole dimensioni archiviati in Cloud Storage che utilizzano un job per file, combina più job di caricamento in un unico job. Puoi caricare da più URI Cloud Storage con un elenco separato da virgole (ad es.
gs://my_path/file_1,gs://my_path/file_2
) o utilizzando caratteri jolly (ad es.gs://my_path/*
).Per ulteriori informazioni, consulta Caricare i dati in batch.
- Ad esempio, se utilizzi job di caricamento, selezione o copia per accodare singole righe di dati a una tabella, ti consigliamo di raggruppare più job in un unico job. BigQuery non ha un buon rendimento se utilizzato come database relazionale. Come best practice, evita di eseguire azioni di accodamento frequente con una sola riga.
- Per accodare i dati a una frequenza elevata, valuta la possibilità di utilizzare l'API BigQuery Storage Write. È una soluzione consigliata per l'importazione dati ad alte prestazioni. L'API BigQuery Storage Write offre funzionalità efficaci, tra cui la semantica di caricamento esattamente una volta. Per informazioni su limiti e quote, consulta API Storage Write e per conoscere i costi di utilizzo di questa API, consulta Prezzi di importazione dati BigQuery.
-
Per monitorare il numero di partizioni modificate in una tabella, utilizza la visualizzazione
INFORMATION_SCHEMA
.
Errori relativi al limite del numero massimo di richieste API
BigQuery restituisce questo errore quando raggiungi il limite di frequenza per il numero di richieste API a un'API BigQuery per utente e per metodo, ad esempio le chiamate al metodo tables.get
da un account di servizio o le chiamate al metodo jobs.insert
da un'email di un altro utente.
Per ulteriori informazioni, consulta il limite di frequenza del numero massimo di richieste API al secondo per
utente per metodo nell'API BigQuery.
Messaggio di errore
Quota exceeded: Your user_method exceeded quota for concurrent api requests per user per method.
Quando si verifica questo errore, diagnosi il problema e segui i passaggi consigliati per risolverlo.
Diagnosi
Se non hai identificato il metodo che ha raggiunto questo limite di frequenza, svolgi i seguenti passaggi:
Per l'account di servizio
Vai al progetto che ospita l'account di servizio.
Nella console Google Cloud, vai alla dashboard API.
Per istruzioni su come visualizzare le informazioni dettagliate sull'utilizzo di un'API, consulta Utilizzare la dashboard delle API.
Nella dashboard delle API, seleziona API BigQuery.
Per visualizzare informazioni più dettagliate sull'utilizzo, seleziona Metriche e poi svolgi i seguenti passaggi:
In Seleziona grafici, seleziona Traffico per metodo API.
Filtra il grafico in base alle credenziali dell'account di servizio. Potresti notare picchi per un metodo nell'intervallo di tempo in cui hai notato l'errore.
Per le chiamate API
Alcune chiamate API registrano errori nei log di audit di BigQuery in Cloud Logging. Per identificare il metodo che ha raggiunto il limite:
Nella console Google Cloud, vai al menu di navigazione Google Cloud > Esplora log per il tuo progetto:
e poi seleziona LoggingFiltra i log eseguendo la seguente query:
resource.type="bigquery_resource" protoPayload.authenticationInfo.principalEmail="<user email or service account>" "Too many API requests per user per method for this user_method" In the log entry, you can find the method name under the property protoPayload.method_name.
Per ulteriori informazioni, consulta la panoramica dei log di controllo di BigQuery.
Risoluzione
Per risolvere questo errore di quota:
Riduci il numero di richieste API o aggiungi un ritardo tra più richieste API in modo che il numero di richieste rimanga al di sotto di questo limite.
Se il limite viene superato solo occasionalmente, puoi implementare i tentativi su questo errore specifico con il backoff esponenziale.
Se inserisci spesso dati, valuta la possibilità di utilizzare gli inserimenti di flussi di dati perché non sono soggetti alla quota dell'API BigQuery. Tuttavia, l'API Insert di streaming ha costi associati e un proprio insieme di limiti e quote.
Per informazioni sul costo degli inserimenti di flussi di dati, consulta la sezione Prezzi di BigQuery.
Durante il caricamento dei dati in BigQuery utilizzando Dataflow con il connettore BigQuery I/O, potresti riscontrare questo errore per il metodo
tables.get
. Per risolvere il problema:Imposta la disposizione di creazione della tabella di destinazione su
CREATE_NEVER
. Per ulteriori informazioni, consulta Creare una disposizione.Utilizza la versione 2.24.0 o successive dell'SDK Apache Beam. Nelle versioni precedenti dell'SDK, la disposizione
CREATE_IF_NEEDED
chiama il metodotables.get
per verificare se la tabella esiste.
Puoi richiedere un aumento della quota contattando l'assistenza o il team di vendita. Per una quota aggiuntiva, consulta la sezione Richiedi un aumento della quota. L'elaborazione della richiesta di aumento della quota potrebbe richiedere diversi giorni. Per fornire maggiori informazioni sulla tua richiesta, ti consigliamo di includere la priorità del job, l'utente che esegue la query e il metodo interessato.
Il tuo progetto ha superato la quota di byte di query gratuiti sottoposti a scansione
BigQuery restituisce questo errore quando esegui una query nel livello di utilizzo gratuito e l'account raggiunge il limite mensile delle dimensioni dei dati su cui è possibile eseguire query. Per ulteriori informazioni sulle query (analisi), consulta il livello di utilizzo gratuito.
Messaggio di errore
Your project exceeded quota for free query bytes scanned
Risoluzione
Per continuare a utilizzare BigQuery, devi eseguire l'upgrade dell'account a un account di fatturazione Cloud a pagamento.
Errori relativi alla quota massima di tabledata.list
byte al secondo per progetto
BigQuery restituisce questo errore quando il numero di progetto indicato
nel messaggio di errore raggiunge la dimensione massima dei dati che possono essere letti tramite
la chiamata all'API tabledata.list
in un progetto al secondo. Per ulteriori informazioni, consulta
Massimo tabledata.list
byte al minuto.
Messaggio di errore
Your project:[project number] exceeded quota for tabledata.list bytes per second per project
Risoluzione
Per risolvere questo errore:
- In generale, ti consigliamo di rimanere al di sotto di questo limite. Ad esempio, distribuendo le richieste su un periodo di tempo più lungo con ritardi. Se l'errore non si verifica spesso, l'implementazione di nuovi tentativi con backoff esponenziale risolve il problema.
- Se il caso d'uso prevede la lettura rapida e frequente di grandi quantità di dati da una tabella, ti consigliamo di utilizzare l'API BigQuery Storage di lettura anziché l'API
tabledata.list
. Se i suggerimenti precedenti non funzionano, puoi richiedere un aumento della quota dalla dashboard API di Google Cloud Console nel seguente modo:
- Vai alla dashboard API della console Google Cloud.
- Nella dashboard, filtra per Quota:
Tabledata list bytes per minute (default quota)
. - Seleziona la quota e segui le istruzioni riportate in Richiedere un limite di quota più alto.
L'esame e l'elaborazione della richiesta potrebbero richiedere diversi giorni.
Troppe istruzioni DML in sospeso per la tabella
Questo errore indica che il numero di istruzioni DML con modifica simultanea (UPDATE
, DELETE
, MERGE
) eseguite sulla stessa tabella ha superato il limite di quota del linguaggio di manipolazione dei dati (DML). Questo limite di quota è per tabella
e si applica solo alle istruzioni DML con modifica, che non includono INSERT
.
Risoluzione
Esegui i job DML in batch seguendo le best practice per le istruzioni DML.
Numero massimo di errori di quota per job di copia al giorno per progetto
BigQuery restituisce questo errore quando il numero di job di copia in esecuzione in un progetto ha superato il limite giornaliero. Per scoprire di più sul limite di job di copia al giorno, consulta Job di copia.
Messaggio di errore
Your project exceeded quota for copies per project
Diagnosi
Se vuoi raccogliere ulteriori dati sulla provenienza dei job di copia, puoi provare a procedere nel seguente modo:
- Se i job di copia si trovano in una o in poche regioni, puoi provare a eseguire query sulla tabella
INFORMATION_SCHEMA.JOBS
per le regioni specifiche. Ad esempio: La parteSELECT creation_time, job_id, user_email, destination_table.project_id, destination_table.dataset_id, destination_table.table_id FROM `PROJECT_ID`.`REGION_NAME`.INFORMATION_SCHEMA.JOBS WHERE creation_time BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 2 DAY) AND CURRENT_TIMESTAMP() AND job_type = "COPY" order by creation_time DESC
REGION_NAME
deve essere sostituita con il nome della regione, incluso il prefissoregion-
. Ad esempio,region-us
,region-asia-south1
. Puoi anche modificare l'intervallo di tempo in base all'intervallo di tempo che ti interessa. - Per visualizzare tutti i job di copia in tutte le regioni, puoi utilizzare il seguente filtro in Cloud Logging:
resource.type="bigquery_resource" protoPayload.methodName="jobservice.insert" protoPayload.serviceData.jobInsertRequest.resource.jobConfiguration.tableCopy:*
Risoluzione
- Se lo scopo delle operazioni di copia frequenti è creare un'istantanea dei dati, considera la possibilità di utilizzare gli istantanee delle tabelle. Gli snapshot delle tabelle sono un'alternativa più economica e veloce alla copia di tabelle complete.
- Puoi richiedere un aumento della quota contattando il team di assistenza o di vendita. L'esame e l'elaborazione della richiesta potrebbero richiedere diversi giorni. Ti consigliamo di indicare la priorità, il caso d'uso e l'ID progetto nella richiesta.
Numero massimo di query simultanee che contengono funzioni remote
BigQuery restituisce questo errore quando il numero di query contemporaneamente in esecuzione che contengono funzioni remote supera il limite.
Per scoprire di più sul limite per le funzioni remote, consulta Funzioni remote.
Messaggio di errore
Exceeded rate limits: too many concurrent queries with remote functions for this project
Diagnosi
Per visualizzare i limiti per le query simultanee che contengono funzioni remote, consulta Limiti delle funzioni remote.
Risoluzione
- Quando utilizzi le funzioni remote, rispetta le best practice per le funzioni remote.
- Puoi richiedere un aumento della quota contattando il team di assistenza o di vendita. L'esame e l'elaborazione della richiesta potrebbero richiedere diversi giorni. Ti consigliamo di indicare la priorità, il caso d'uso e l'ID progetto nella richiesta.
Errori relativi al limite di dimensioni dei brani in riproduzione casuale
BigQuery restituisce questo errore quando il progetto supera il limite massimo di dimensioni del disco e della memoria disponibile per le operazioni di ordinamento casuale.
Questa quota viene calcolata per prenotazione e suddivisa tra i progetti per le prenotazioni. La quota non può essere modificata dall'assistenza clienti Google Cloud. Per scoprire di più sul tuo utilizzo, esegui una query nella visualizzazione INFORMATION_SCHEMA.JOBS_TIMELINE
.
Messaggio di errore
Ricevi uno dei seguenti messaggi di errore:
Quota exceeded: Your project exceeded quota for total shuffle size limit.
Resources exceeded: Your project or organization exceeded the maximum disk and memory limit available for shuffle operations. Consider provisioning more slots, reducing query concurrency, or using more efficient logic in this job.
Risoluzione
Per risolvere questo errore:
- Aumentare le prenotazioni
- Ottimizzare le query
- Riduci la concorrenza delle query o la materializzazione dei risultati intermedi per ridurre la dipendenza dalle risorse. Per ulteriori informazioni, consulta Codeforces e Creare viste materializzate.
Numero massimo di istruzioni CREATE MODEL
Questo errore indica che hai superato la quota per le istruzioni CREATE MODEL.
Messaggio di errore
Quota exceeded: Your project exceeded quota for CREATE MODEL queries per project.
Risoluzione
Se superi la quota per le dichiarazioni CREATE MODEL
, invia un'email all'indirizzo
bqml-feedback@google.com
e richiedi un aumento della quota.