Resolver erros de limites e cotas
O BigQuery tem várias cotas e limites que limitam a taxa e o volume de diferentes solicitações e operações. Eles existem para proteger a infraestrutura e ajudar a proteger contra o uso inesperado do cliente. Neste documento, descrevemos como diagnosticar e mitigar erros específicos resultantes de cotas e limites.
Se a mensagem de erro não estiver listada neste documento, consulte a lista de mensagens de erro que têm informações de erro mais genéricas.
Informações gerais
Se uma operação do BigQuery falhar devido ao exceder uma cota, a API
retornará o código de status HTTP 403 Forbidden
. O corpo da resposta contém mais
informações sobre o limite que foi atingido. O corpo da resposta será semelhante
a este:
{
"code" : 403,
"errors" : [ {
"domain" : "global",
"message" : "Quota exceeded: ...",
"reason" : "quotaExceeded"
} ],
"message" : "Quota exceeded: ..."
}
O campo message
no payload descreve o limite que foi excedido. Por
exemplo, o campo message
exibirá Exceeded rate limits: too many table
update operations for this table
.
Em geral, os limites de cota se enquadram em duas categorias, indicadas pelo campo reason
no payload de resposta.
rateLimitExceeded
: este valor indica um limite de curto prazo. Para resolver esses problemas de limite, tente realizar a operação novamente após alguns segundos. Use a espera exponencial no intervalo das tentativas de repetição. Ou seja, aumente exponencialmente o atraso entre cada nova tentativa.quotaExceeded
: este valor indica um limite de longo prazo. Se você atingir um limite de cota de longo prazo, aguarde 10 minutos ou mais antes de tentar novamente. Se você alcançar um desses limites de cota de longo prazo frequentemente, analise sua carga de trabalho para encontrar formas de minimizar o problema. Isso pode incluir a otimização da carga de trabalho ou a solicitação de um aumento de cota.
Para erros quotaExceeded
, analise a mensagem de erro para entender qual
limite de cota foi excedido. Em seguida, analise a carga de trabalho para ver se é possível evitar atingir
a cota.
Em alguns casos, é possível aumentar a cota ao entrar em contato com o suporte do BigQuery ou com a equipe de vendas do Google Cloud, mas recomendamos seguir as sugestões deste documento primeiro.
Diagnóstico
Para diagnosticar problemas, faça o seguinte:
Use as visualizações
INFORMATION_SCHEMA
para analisar o problema original. Essas visualizações contêm metadados sobre seus recursos do BigQuery, incluindo jobs, reservas e inserções por streaming.Por exemplo, na consulta a seguir, a visualização
INFORMATION_SCHEMA.JOBS
é usada para listar todos os erros relacionados a cotas que ocorreram no dia anterior: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')
Veja os erros nos registros de auditoria do Cloud.
Por exemplo, usando o Explorador de registros, a consulta a seguir retorna erros com
Quota exceeded
oulimit
na string da mensagem:resource.type = ("bigquery_project" OR "bigquery_dataset") protoPayload.status.code ="7" protoPayload.status.message: ("Quota exceeded" OR "limit")
Neste exemplo, o código de status
7
indicaPERMISSION_DENIED
, que corresponde ao código de status HTTP403
.Para ver mais amostras de consultas dos Registros de auditoria do Cloud, acesse Consultas do BigQuery.
Erros de limite da fila de consultas
Se um projeto tentar enfileirar consultas mais interativas ou em lote do que o limite de filas permite, talvez você encontre esse erro.
Mensagem de erro
Quota exceeded: Your project and region exceeded quota for max number of jobs that can be queued per project.
Resolução
Para resolver esse erro, faça o seguinte:
Pause o job. Se você identificar um processo ou um fluxo de trabalho responsável por um aumento nas consultas, pause esse processo ou fluxo de trabalho.
Use jobs com prioridade de lote. É possível enfileirar mais consultas em lote do que consultas interativas.
Distribua consultas. Organize e distribua a carga entre diferentes projetos conforme informado pela natureza das consultas e suas necessidades de negócios.
Distribua tempos de execução. Distribua a carga por um período maior. Se for necessário executar várias consultas na solução de relatórios, tente introduzir uma ordem aleatória para o início das consultas. Por exemplo, não inicie todos os relatórios ao mesmo tempo.
Use o BigQuery BI Engine. Se você encontrou esse erro ao usar uma ferramenta de Business Intelligence (BI) para criar painéis que consultam dados no BigQuery, recomendamos que use o BigQuery BI Engine. Usar o BigQuery BI Engine é ideal para este caso de uso.
Otimize as consultas e o modelo de dados. Muitas vezes, uma consulta pode ser reescrita para que seja executada com mais eficiência. Por exemplo, se a consulta contiver uma cláusula de expressão de tabela comum (CTE)–
WITH
, que é referenciada em mais de um lugar na consulta, esse cálculo será feito várias vezes. É melhor manter os cálculos feitos pelo CTE em uma tabela temporária e depois referenciá-la na consulta.Várias junções também podem ser a fonte de falta de eficiência. Nesse caso, use colunas aninhadas e repetidas. Isso geralmente melhora a localidade dos dados, elimina a necessidade de algumas junções e, no geral, reduz o consumo de recursos e o tempo de execução da consulta.
Otimizar as consultas torna-as mais baratas. Assim, ao usar preços baseados em capacidade, é possível executar mais consultas com seus slots. Para mais informações, consulte Introdução à otimização do desempenho da consulta.
Otimize o modelo de consulta. O BigQuery não é um banco de dados relacional. Ele não é otimizado para um número infinito de consultas pequenas. A execução de um grande número de consultas pequenas esgota rapidamente as cotas. Essas consultas não são executadas com a mesma eficácia que os produtos de banco de dados menores. O BigQuery é um grande armazenamento de dados e seu principal caso de uso. Ele funciona melhor com consultas de análise em grandes quantidades de dados.
Preserve dados (tabelas salvas). Pré-processe os dados no BigQuery e armazene-os em outras tabelas. Por exemplo, se você executar muitas consultas com uso intensivo de computação com condições
WHERE
diferentes, os resultados não serão armazenados em cache. Essas consultas também consomem recursos sempre que são executadas. Para melhorar o desempenho dessas consultas e diminuir o tempo de processamento, pré-calcule os dados e armazená-los em uma tabela. É possível consultar esses dados pré-calculados na tabela por consultasSELECT
. Geralmente, isso pode ser feito durante a ingestão no processo de ETL ou usando consultas programadas ou visualizações materializadas.Use o modo de simulação. Execute consultas no modo de simulação que estima o número de bytes lidos, mas não processa a consulta.
Visualizar os dados da tabela. Para testar ou explorar dados em vez de executar consultas, visualize os dados da tabela com o recurso de visualização de tabela do BigQuery.
Use resultados de consulta armazenados em cache. Todos os resultados de consultas, incluindo interativas e em lote, são armazenados em cache em tabelas temporárias por aproximadamente 24 horas, com algumas exceções. A execução de uma consulta em cache ainda é considerada no limite de consultas simultâneas, mas as consultas que usam resultados armazenados em cache são significativamente mais rápidas do que as consultas que não usam resultados em cache porque o BigQuery não precisa computar o conjunto de resultados. do Google Analytics.
Número de modificações de partições para erros de cota de tabelas particionadas por coluna
O BigQuery retorna esse erro quando a tabela particionada por coluna atinge a cota do número de modificações de partição permitidas por dia. As modificações de partição incluem o total de todos os jobs de carregamento, jobs de cópia e jobs de consulta que anexam ou substituem uma partição de destino.
Para ver o valor do limite do Número de modificações de partições de tabela particionada por coluna por dia, consulte Tabelas particionadas.
Mensagem de erro
Quota exceeded: Your table exceeded quota for Number of partition modifications to a column partitioned table
Resolução
Não é possível aumentar essa cota. Para resolver esse erro, faça o seguinte:
- Altere o particionamento na tabela para ter mais dados em cada partição, a fim de diminuir o número total de partições. Por exemplo, altere do particionamento por dia para o particionamento por mês ou altere como você particiona a tabela.
- Use clustering em vez de particionamento.
-
Se você carrega dados com frequência de vários arquivos pequenos armazenados no Cloud Storage que usam um job por arquivo, combine vários jobs de carregamento em um único job. É possível carregar usando vários
URIs do Cloud Storage com
uma lista separada por vírgulas (por exemplo,
gs://my_path/file_1,gs://my_path/file_2
) ou usando caracteres curinga (por exemplo,gs://my_path/*
).Para mais informações, consulte Como carregar dados em lote.
- Se você usar jobs de carregamento, seleção ou cópia para anexar linhas únicas de dados a uma tabela, por exemplo, agrupe vários jobs em um único job. O BigQuery não tem um bom desempenho quando usado como banco de dados relacional. Como prática recomendada, evite executar ações frequentes de anexação de linha única.
- Para anexar dados a uma taxa alta, use a API BigQuery Storage Write. É uma solução recomendada para o processamento de dados de alto desempenho. A API BigQuery Storage Write tem recursos avançados, incluindo semântica de entrega exatamente uma vez. Para saber mais sobre limites e cotas, consulte API Storage Write e para ver os custos de uso dessa API, consulte Preços de ingestão de dados do BigQuery.
-
Para monitorar o número de partições modificadas em uma tabela, use a
visualização
INFORMATION_SCHEMA
.
Erros de cota de inserção de streaming
Nesta seção, você verá algumas dicas para solucionar erros de cota relacionados ao streaming de dados no BigQuery.
Em algumas regiões, as inserções de streaming têm uma cota maior se você não preencher
o campo insertId
de cada linha. Para mais informações sobre cotas para
inserções de streaming, consulte Inserções de streaming.
Os erros relacionados à cota de streaming do BigQuery dependem da
presença ou da ausência de insertId
.
Mensagem de erro
Se o campo insertId
estiver vazio, o seguinte erro pode acontecer:
Limite de cota | Mensagem de erro |
---|---|
Bytes por segundo, por projeto | Sua entidade com gaia_id: GAIA_ID no projeto PROJECT_ID na região REGION excedeu a cota de bytes de inserção por segundo. |
Se o campo insertId
estiver preenchido, os seguintes erros de cota podem acontecer:
Limite de cota | Mensagem de erro |
---|---|
Linhas por segundo por projeto | Seu projeto PROJECT_ID em REGION excedeu a cota de linhas de inserção de streaming por segundo. |
Linhas por segundo por tabela | Sua tabela: TABLE_ID excedeu a cota de linhas de inserção de streaming por segundo. |
Bytes por segundo por tabela | Sua tabela: TABLE_ID excedeu a cota de inserção de streaming de bytes por segundo. |
O campo insertId
tem como objetivo eliminar a duplicação de linhas inseridas. Se várias
inserções com o mesmo insertId
chegarem em uma janela dentro de alguns minutos,
o BigQuery gravará uma única versão do registro. No entanto, essa
eliminação automática não é garantida. Para a capacidade máxima de streaming,
recomendamos que você não inclua insertId
e use a
eliminação de duplicação manual.
Para mais informações, consulte
Como garantir a consistência dos dados.
Se você encontrar esse erro, diagnostique o problema e siga as etapas recomendadas para resolvê-lo.
Diagnóstico
Use as visualizações STREAMING_TIMELINE_BY_*
para analisar o tráfego de streaming. Essas visualizações agregam
estatísticas de streaming em intervalos de um minuto, agrupadas por código de erro. Erros de cota aparecem
nos resultados com error_code
igual a RATE_LIMIT_EXCEEDED
ou
QUOTA_EXCEEDED
.
De acordo com o limite de cotas específico que foi alcançado, confira total_rows
ou
total_input_bytes
. Se o erro estiver relacionado com as cotas no nível da tabela, filtre por table_id
.
Por exemplo, a consulta a seguir mostra o total de bytes ingerido por minuto e o número total de erros de cota:
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
Resolução
Para resolver esse erro, faça o seguinte:
Se você estiver usando o campo
insertId
para eliminação de duplicação e seu projeto estiver em uma região compatível com a maior cota de streaming, recomendamos remover o campoinsertId
. Essa solução pode exigir algumas etapas a mais para eliminar a duplicação dos dados manualmente. Para mais informações, consulte Remoção manual de duplicatas.Se você não estiver usando
insertId
ou se não for possível removê-lo, monitore o tráfego de streaming durante um período de 24 horas e analise os erros de cota:Se houver mais erros
RATE_LIMIT_EXCEEDED
do queQUOTA_EXCEEDED
, e o tráfego geral estiver abaixo de 80% da cota, os erros provavelmente indicam picos temporários. Gerencie esses erros repetindo a operação usando a espera exponencial no intervalo das novas tentativas.Se você estiver usando um job do Dataflow para inserir dados, use jobs de carregamento em vez de inserções por streaming. Para mais informações, consulte Como configurar o método de inserção. Se você estiver usando o Dataflow com um conector de E/S personalizado, use um conector de E/S integrado. Para mais informações, consulte Padrões de E/S personalizados.
Se você perceber erros
QUOTA_EXCEEDED
ou se o tráfego geral exceder constantemente 80% da cota, envie uma solicitação para aumentar xda cota. Para mais informações, consulte Como solicitar um limite de cota maior.Considere também substituir as inserções por streaming pela API Storage Write mais recente, que tem maior capacidade, menor preço e muitos recursos úteis.
Como carregar erros de cota de arquivos CSV
Se você carregar um arquivo CSV grande usando o comando bq load
com a
sinalização --allow_quoted_newlines
,
poderá encontrar esse erro.
Mensagem de erro
Input CSV files are not splittable and at least one of the files is larger than
the maximum allowed size. Size is: ...
Resolução
Para resolver esse erro, faça o seguinte:
- Defina a sinalização
--allow_quoted_newlines
comofalse
. - Divida o arquivo CSV em partes menores que tenham menos de 4 GB.
Para mais informações sobre os limites aplicáveis quando você carrega dados no BigQuery, consulte Jobs de carregamento.
A importação de tabela ou consulta anexa erros de cota
O BigQuery retorna essa mensagem de erro quando a tabela atinge o limite de operações diárias para tabelas padrão. As operações de tabela incluem o total combinado de todos os jobs de carregamento, jobs de cópia e jobs de consulta que anexam ou substituir uma tabela de destino.
Para ver o valor do limite de Operações de tabela por dia, consulte Tabelas padrão.
Mensagem de erro
Your table exceeded quota for imports or query appends per table
Quando você encontrar esse erro, diagnostique o problema e siga as etapas recomendadas para resolvê-lo.
Diagnóstico
Se você não tiver identificado a origem da maioria das operações de tabela, faça o seguinte:
Anote o projeto, o conjunto de dados e a tabela em que a consulta com falha, o carregamento ou o job de cópia está gravando.
Use tabelas
INFORMATION_SCHEMA.JOBS_BY_*
para saber mais sobre jobs que modificam a tabela.No exemplo a seguir, você encontra a contagem de jobs por hora agrupados por tipo de job por um período de 24 horas usando
JOBS_BY_PROJECT
. Se você espera que vários projetos gravem na tabela, substituaJOBS_BY_PROJECT
porJOBS_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
Resolução
Não é possível aumentar essa cota. Para resolver esse erro, faça o seguinte:
-
Se você carrega dados com frequência de vários arquivos pequenos armazenados no Cloud Storage que usam um job por arquivo, combine vários jobs de carregamento em um único job. É possível carregar usando vários
URIs do Cloud Storage com
uma lista separada por vírgulas (por exemplo,
gs://my_path/file_1,gs://my_path/file_2
) ou usando caracteres curinga (por exemplo,gs://my_path/*
).Para mais informações, consulte Como carregar dados em lote.
- Se você usar jobs de carregamento, seleção ou cópia para anexar linhas únicas de dados a uma tabela, por exemplo, agrupe vários jobs em um único job. O BigQuery não tem um bom desempenho quando usado como banco de dados relacional. Como prática recomendada, evite executar ações frequentes de anexação de linha única.
- Para anexar dados a uma taxa alta, use a API BigQuery Storage Write. É uma solução recomendada para o processamento de dados de alto desempenho. A API BigQuery Storage Write tem recursos avançados, incluindo semântica de entrega exatamente uma vez. Para saber mais sobre limites e cotas, consulte API Storage Write e para ver os custos de uso dessa API, consulte Preços de ingestão de dados do BigQuery.
-
Para monitorar o número de partições modificadas em uma tabela, use a
visualização
INFORMATION_SCHEMA
.
Taxa máxima de erros de limite de operações de atualização de metadados de tabela
O BigQuery retorna esse erro quando a tabela atinge o limite de
taxa máxima de operações de atualização de metadados por tabela para tabelas padrão.
As operações de tabela incluem o total combinado de todos os jobs de carregamento,
jobs de cópia e jobs de consulta
que anexam ou substituem uma tabela de destino ou que usam
uma instrução DML DELETE
, INSERT
,
MERGE
, TRUNCATE TABLE
ou UPDATE
para gravar dados em uma tabela.
Para ver o valor do limite de Taxa máxima de operações de atualização de metadados de tabela por tabela, consulte Tabelas padrão.
Mensagem de erro
Exceeded rate limits: too many table update operations for this table
Quando você encontrar esse erro, diagnostique o problema e siga as etapas recomendadas para resolvê-lo.
Diagnóstico
As atualizações na tabela de metadados podem ser originadas de chamadas de API, que modificam os metadados de uma tabela ou de jobs que modificam o conteúdo de uma tabela. Se você não tiver identificado a origem da maioria das operações de atualização para os metadados de uma tabela, faça o seguinte:
Identificar chamadas de API
Acesse o menu de navegação do Google Cloud > Explorador de registros:
e selecione Geração de registrosFiltre os registros para ver as operações de tabela executando esta consulta:
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")
Identificar jobs
A consulta a seguir retorna uma lista de jobs que modificam a tabela afetada
no projeto. Se você espera que vários projetos em uma organização
gravem na tabela, substitua JOBS_BY_PROJECT
por 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"
Para mais informações, consulte Visão geral dos registros de auditoria do BigQuery.
Resolução
Não é possível aumentar essa cota. Para resolver esse erro, faça o seguinte:
- Reduza a taxa de atualização dos metadados da tabela.
- Adicione um atraso entre os jobs ou as operações da tabela para garantir que a taxa de atualização esteja dentro do limite.
Para inserções ou modificações de dados, use operações DML. As operações DML não são afetadas pelo limite de taxa máxima de operações de atualização de metadados da tabela por tabela.
As operações DML têm outros limites e cotas. Para mais informações, consulte Como usar a linguagem de manipulação de dados (DML).
-
Se você carrega dados com frequência de vários arquivos pequenos armazenados no Cloud Storage que usam um job por arquivo, combine vários jobs de carregamento em um único job. É possível carregar usando vários
URIs do Cloud Storage com
uma lista separada por vírgulas (por exemplo,
gs://my_path/file_1,gs://my_path/file_2
) ou usando caracteres curinga (por exemplo,gs://my_path/*
).Para mais informações, consulte Como carregar dados em lote.
- Se você usar jobs de carregamento, seleção ou cópia para anexar linhas únicas de dados a uma tabela, por exemplo, agrupe vários jobs em um único job. O BigQuery não tem um bom desempenho quando usado como banco de dados relacional. Como prática recomendada, evite executar ações frequentes de anexação de linha única.
- Para anexar dados a uma taxa alta, use a API BigQuery Storage Write. É uma solução recomendada para o processamento de dados de alto desempenho. A API BigQuery Storage Write tem recursos avançados, incluindo semântica de entrega exatamente uma vez. Para saber mais sobre limites e cotas, consulte API Storage Write e para ver os custos de uso dessa API, consulte Preços de ingestão de dados do BigQuery.
-
Para monitorar o número de partições modificadas em uma tabela, use a
visualização
INFORMATION_SCHEMA
.
Número máximo de erros de limite de solicitações da API
O BigQuery retorna esse erro quando você atinge o limite de taxa do
número de solicitações de API a uma API BigQuery por usuário por método. Por
exemplo, chamadas do método
tables.get
a partir de uma conta de serviço ou as chamadas do método
jobs.insert
a partir de um e-mail de usuário diferente.
Para mais informações, consulte o limite de taxa Número máximo de solicitações de API por segundo por
usuário por método em
Todas as APIs do BigQuery.
Mensagem de erro
Quota exceeded: Your user_method exceeded quota for concurrent api requests per user per method.
Quando você encontrar esse erro, diagnostique o problema e siga as etapas recomendadas para resolvê-lo.
Diagnóstico
Se você não identificou o método que atingiu esse limite de taxa, faça o seguinte:
Para a conta de serviço
Acesse o projeto que hospeda a conta de serviço.
No Console do Google Cloud, acesse o Painel de APIs.
Para ver instruções sobre como visualizar as informações de uso detalhadas de uma API, consulte Como usar o painel de APIs.
No painel de API, selecione API BigQuery.
Para ver informações de uso mais detalhadas, selecione Métricas e faça o seguinte:
Em Selecionar Gráfico, selecione Tráfego por método de API.
Filtre o gráfico pelas credenciais da conta de serviço. Há picos em um método no período em que você percebeu o erro.
Para chamadas de API
Alguns chamadas de API registram erros nos registros de auditoria do BigQuery no Cloud Logging. Para identificar o método que atingiu o limite, faça o seguinte:
No console do Google Cloud, acesse o menu de navegação do Google Cloud.> Explorador de registros para seu projeto:
e selecioneGeração de registrosFiltre os registros executando a seguinte consulta:
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.
Para mais informações, consulte Visão geral dos registros de auditoria do BigQuery.
Resolução
Para resolver esse erro, faça o seguinte:
Reduza o número de solicitações de API ou adicione um atraso entre várias solicitações de API para que o número de solicitações permaneça abaixo desse limite.
Se o limite for excedido apenas de vez em quando, será possível implementar novas tentativas nesse erro específico com espera exponencial.
Se você insere dados com frequência, considere usar inserções por streaming porque elas não são afetadas pela cota da API BigQuery. No entanto, a API de inserções por streaming tem custos associados a ela e tem seu próprio conjunto de limites e cotas.
Para saber mais sobre o custo das inserções por streaming, consulte Preços do BigQuery.
Ao carregar dados no BigQuery usando o Dataflow com o conector de E/S do BigQuery, talvez você veja esse erro no método
tables.get
. Para resolver esse problema, faça o seguinte:Defina a disposição de criação da tabela de destino como
CREATE_NEVER
. Para mais informações, consulte Criar disposição.Use o SDK do Apache Beam versão 2.24.0 ou mais recente. Nas versões anteriores do SDK, a disposição
CREATE_IF_NEEDED
chama o métodotables.get
para verificar se a tabela existe.
É possível solicitar um aumento de cota ao entrar em contato com o suporte ou com a equipe de vendas. Para cotas de streaming adicionais, consulte Solicitar um aumento de cota. A solicitação de um aumento de cota pode levar vários dias para ser processada. Para fornecer mais informações, recomendamos que a solicitação inclua a prioridade do job, o usuário que executa a consulta e o método afetado.
Seu projeto excedeu a cota de bytes de consulta verificados gratuitos
O BigQuery retorna esse erro quando você executa uma consulta no nível do uso gratuito e a conta atinge o limite mensal do tamanho de dados que pode ser consultado. Saiba mais sobre Consultas (análise) em Nível de uso gratuito.
Mensagem de erro
Your project exceeded quota for free query bytes scanned
Resolução
Para continuar usando o BigQuery, faça upgrade da conta para uma conta paga do Cloud Billing.
Erros de cota máxima do tabledata.list
de bytes por segundo por projeto
O BigQuery retorna esse erro quando o número do projeto mencionado
na mensagem de erro atinge o tamanho máximo de dados que podem ser lidos na chamada
da API tabledata.list
em um projeto por segundo. Para mais informações, consulte
Máximo de tabledata.list
bytes por minuto.
Mensagem de erro
Your project:[project number] exceeded quota for tabledata.list bytes per second per project
Resolução
Para resolver esse erro, faça o seguinte:
- Em geral, recomendamos ficar abaixo desse limite. Por exemplo, espaçando as solicitações por um período maior com atrasos. Se o erro não ocorre com frequência, a implementação de novas tentativas com espera exponencial soluciona esse problema.
- Se o caso de uso necessita de uma leitura rápida e frequente de uma grande quantidade de dados de
uma tabela, recomendamos usar a API BigQuery Storage Read
em vez da API
tabledata.list
. Se as sugestões anteriores não funcionarem, solicite um aumento de cota no painel da API do console do Google Cloud da seguinte maneira:
- Acesse o painel de APIs do console do Google Cloud.
- No painel, filtre por cota:
Tabledata list bytes per minute (default quota)
. - Selecione a cota e siga as instruções em Como solicitar um limite de cota maior.
A análise e o processamento da solicitação podem levar vários dias.
Muitas instruções DML pendentes na tabela
Esse erro significa que o número de instruções DML mutáveis simultâneas
(UPDATE
, DELETE
, MERGE
) em execução na mesma tabela excedeu
o limite de cota da linguagem de manipulação de dados (DML, na sigla em inglês). Esse limite de cota é por tabela e se aplica apenas à DML mutante, que não inclui INSERT
.
Resolução
Agrupe os jobs em DML em lote seguindo as Práticas recomendadas para instruções DML.
Erros de cota do número máximo de jobs de cópia por dia por projeto
O BigQuery retorna esse erro quando o número de jobs de cópia em execução em um projeto excede o limite diário. Saiba mais sobre o limite de Jobs de cópia por dia em Jobs de cópia.
Mensagem de erro
Your project exceeded quota for copies per project
Diagnóstico
Se você quiser coletar mais dados sobre a origem dos jobs de cópia, tente o seguinte:
- Se os jobs de cópia estiverem em uma única região ou em apenas algumas, tente
consultar a tabela
INFORMATION_SCHEMA.JOBS
para essas regiões específicas. Por exemplo: A 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
precisa ser substituída pelo nome da região, incluindo o prefixoregion-
. Exemplo,region-us
,region-asia-south1
. Ajuste o intervalo de tempo conforme o período que você prefere. - Para ver todos os jobs de cópia em todas as regiões, use o seguinte filtro no
Cloud Logging:
resource.type="bigquery_resource" protoPayload.methodName="jobservice.insert" protoPayload.serviceData.jobInsertRequest.resource.jobConfiguration.tableCopy:*
Resolução
- Se o objetivo das operações de cópia frequentes for criar um snapshot de dados, use snapshots de tabela. Os snapshots de tabela são uma alternativa mais barata e rápida de copiar tabelas inteiras.
- Você pode solicitar um aumento de cota entrando em contato com as equipes de suporte ou vendas. A análise e o processamento da solicitação podem levar vários dias. Recomendamos informar a prioridade, o caso de uso e o ID do projeto na solicitação.
Número máximo de consultas simultâneas que contêm funções remotas
Esse erro é retornado no BigQuery quando o número de consultas simultâneas que contêm funções remotas excede o limite.
Para saber mais sobre o limite de funções remotas, consulte Funções remotas.
Mensagem de erro
Exceeded rate limits: too many concurrent queries with remote functions for this project
Diagnóstico
Para ver os limites de consultas simultâneas que contêm funções remotas, consulte Limites da função remota.
Resolução
- Ao usar funções remotas, siga as práticas recomendadas.
- Você pode solicitar um aumento de cota entrando em contato com as equipes de suporte ou vendas. A análise e o processamento da solicitação podem levar vários dias. Recomendamos informar a prioridade, o caso de uso e o ID do projeto na solicitação.
Erros de limite de tamanho de embaralhamento
O BigQuery retorna esse erro quando o projeto excede o limite máximo de tamanho de disco e memória disponível para operações de embaralhamento.
Essa cota é calculada por reserva e dividida entre os projetos das reservas. A cota não pode ser modificada pelo Cloud Customer Care. Saiba mais
sobre seu uso consultando a visualização INFORMATION_SCHEMA.JOBS_TIMELINE
.
Mensagem de erro
Você encontrará uma das seguintes mensagens de erro:
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.
Resolução
Para resolver esse erro, faça o seguinte:
- Aumentar sua reserva
- Otimizar consultas
- Reduzir a simultaneidade de consultas ou materializar resultados intermediários para diminuir a dependência de recursos. Para mais informações, consulte Filas de consulta e Criar visualizações materializadas.
Número máximo de instruções CREATE MODEL
Esse erro significa que você excedeu a cota de instruções CREATE MODEL.
Mensagem de erro
Quota exceeded: Your project exceeded quota for CREATE MODEL queries per project.
Resolução
Se você exceder a cota
para instruções CREATE MODEL
,
solicite um aumento de cota.