Estimar e controlar custos
Nesta página, descrevemos as práticas recomendadas para estimar e controlar custos no BigQuery.
Os custos principais no BigQuery são computação, usada para processamento de consultas, e armazenamento, para dados armazenados no BigQuery. O BigQuery oferece dois tipos de modelos de preço para processamento de consultas: sob demanda e com base na capacidade. Cada modelo oferece práticas recomendadas diferentes para o controle de custos. Para dados armazenados no BigQuery, os custos dependem do modelo de faturamento de armazenamento configurado para cada conjunto de dados.
Entender os preços de computação do BigQuery
Há diferenças sutis nos preços de computação do BigQuery que afetam o planejamento de capacidade e o controle de custos.
Modelos de preços
Para computação sob demanda no BigQuery, você recebe cobranças por TiB para consultas do BigQuery.
Como alternativa, para a computação de capacidade no BigQuery, você recebe cobranças pelos recursos computacionais (slots) usados para processar a consulta. Para usar esse modelo, configure as reservas para os slots.
As reservas têm os seguintes recursos:
- Eles são alocados em pools de slots e permitem gerenciar a capacidade e isolar cargas de trabalho de maneira que faça sentido para sua organização.
- Eles precisam residir em um projeto de administração e estão sujeitos a cotas e limites.
O modelo de preços de capacidade oferece várias edições, todas com uma opção de pagamento por uso que é cobrada em horas de slot. As edições Enterprise e Enterprise Plus também oferecem compromissos de slot opcionais de um ou três anos que podem economizar dinheiro em relação à taxa de pagamento por uso.
Também é possível definir reservas de escalonamento automático usando a opção de pagamento por uso. Para ver mais informações, consulte os seguintes tópicos:
- Para comparar modelos de preços, consulte Como escolher um modelo.
- Para detalhes sobre preços, consulte Preços de computação sob demanda e Preços de computação de capacidade.
Restringir custos para cada modelo
Quando você usa o modelo de preços sob demanda, a única maneira de restringir custos é configurar cotas diárias no nível do projeto ou do usuário. No entanto, essas cotas aplicam um limite máximo que impede que os usuários executem consultas além do limite da cota. Para definir cotas, consulte Criar cotas de consulta personalizadas.
Ao usar o modelo de preços de capacidade com reservas de slots, você especifica o número máximo de slots disponíveis para uma reserva. Também é possível comprar compromissos de slots que oferecem preços com desconto por um período de compromisso.
É possível usar as edições totalmente sob demanda definindo a linha de base da reserva como 0 e o máximo como uma configuração que atenda às necessidades da carga de trabalho. O BigQuery escalona automaticamente até o número de slots necessário para sua carga de trabalho, nunca excedendo o máximo definido. Para mais informações, consulte Gerenciamento de carga de trabalho usando reservas.
Controlar os custos de consulta
Para controlar os custos de consultas individuais, recomendamos que você siga as práticas recomendadas para otimizar a computação de consultas e otimizar o armazenamento.
As seções a seguir descrevem outras práticas recomendadas que podem ser usadas para controlar ainda mais os custos de consulta.
Criar cotas de consulta personalizadas
Prática recomendada:use cotas de consulta diárias personalizadas para limitar a quantidade de dados processados por dia.
Para gerenciar os custos, defina uma cota personalizada, que especifique um limite na quantidade de dados processados por dia por projeto ou usuário. Os usuários não conseguem executar consultas quando a cota é atingida.
Para definir uma cota personalizada, você precisa de funções ou permissões específicas. Para definir cotas, consulte Cotas e limites.
Para mais informações, consulte Restringir custos para cada modelo de preços.
Verificar o custo estimado antes de executar uma consulta
Prática recomendada: antes de executar consultas, visualize-as para tentar estimar os custos.
Ao usar o modelo de preços sob demanda, as consultas são cobradas de acordo com o número de bytes lidos. Para estimar custos antes de executar uma consulta:
- Use o validador de consultas no console do Google Cloud.
- Execute uma simulação para consultas.
Usar o validador de consultas
Quando você insere uma consulta no console do Google Cloud, o validador verifica a sintaxe da consulta e fornece uma estimativa do número de bytes lidos. Esta estimativa pode ser usada para calcular o custo da consulta na calculadora de preços.
Se a consulta não for válida, o validador de consultas exibirá uma mensagem de erro. Por exemplo:
Not found: Table myProject:myDataset.myTable was not found in location US
Se a consulta for válida, o validador de consulta fornecerá uma estimativa do número de bytes necessários para processar a consulta. Exemplo:
This query will process 623.1 KiB when run.
Executar uma simulação
Para executar uma simulação, faça o seguinte:
Console
Acesse a página do BigQuery.
Digite a consulta no Editor de consultas.
Se a consulta for válida, uma marca de seleção será exibida junto com a quantidade de dados que serão processados pela consulta. Se a consulta for inválida, um ponto de exclamação será exibido com uma mensagem de erro.
bq
Insira uma consulta como a seguinte usando a sinalização --dry_run
.
bq query \ --use_legacy_sql=false \ --dry_run \ 'SELECT COUNTRY, AIRPORT, IATA FROM `project_id`.dataset.airports LIMIT 1000'
Para uma consulta válida, o comando produz a seguinte resposta:
Query successfully validated. Assuming the tables are not modified, running this query will process 10918 bytes of data.
API
Para executar uma simulação usando a API, envie um job de consulta com
dryRun
definido como true
no
tipo
JobConfiguration.
Go
Antes de testar esta amostra, siga as instruções de configuração do Go no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Go.
Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Java
Antes de testar esta amostra, siga as instruções de configuração do Java no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Java.
Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Node.js
Antes de testar esta amostra, siga as instruções de configuração do Node.js no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Node.js.
Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
PHP
Antes de testar esta amostra, siga as instruções de configuração do PHP no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em PHP.
Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Python
Defina a propriedade QueryJobConfig.dry_run como True
.
Se uma configuração de consulta de simulação for fornecida,
Client.query()
sempre retornará um
QueryJob
concluído (links em inglês).
Antes de testar esta amostra, siga as instruções de configuração do Python no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Python.
Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Estimar custos de consulta
Ao usar o modelo de preços sob demanda, é possível estimar o custo da execução de uma consulta calculando o número de bytes processados.
Cálculo do tamanho da consulta sob demanda
Para calcular o número de bytes processados pelos vários tipos de consultas, consulte as seguintes seções:
Evitar executar consultas para explorar dados de tabelas
Prática recomendada: não faça consultas para explorar ou visualizar dados da tabela.
Se você estiver testando ou explorando dados, use as opções de visualização da tabela para conferir dados sem custos financeiros e sem afetar as cotas.
O BigQuery é compatível com as opções de visualização de dados a seguir:
- Na página de detalhes da tabela no console do Google Cloud, clique na guia Visualização para criar uma amostra dos dados.
- Na ferramenta de linha de comando bq, use o comando
bq head
e especifique o número de linhas que quer visualizar. - Na API, use
tabledata.list
para recuperar os dados da tabela de um conjunto de linhas especificado. - Evite usar
LIMIT
em tabelas que não estão em cluster. Para tabelas que não estão em cluster, uma cláusulaLIMIT
não reduzirá os custos de computação.
Restringir o número de bytes faturados por consulta
Prática recomendada:use a configuração máxima de bytes cobrados para limitar os custos de consulta ao usar o modelo de preços sob demanda.
Você pode limitar o número de bytes cobrados para uma consulta usando a configuração máxima de bytes cobrados. Quando você define o máximo de bytes cobrados, o número de bytes lidos pela consulta é estimado antes da execução da consulta. Se o número de bytes estimados estiver além do limite, a consulta falhará sem gerar cobranças.
Para tabelas em cluster, a estimativa do número de bytes cobrados para uma consulta é um limite superior e pode ser maior que o número real de bytes cobrados depois de executar a consulta. Em alguns casos, se você definir o máximo de bytes cobrados, uma consulta em uma tabela em cluster poderá falhar, mesmo que os bytes reais faturados não excedam a configuração máxima de bytes cobrados.
Se uma consulta falhar devido à configuração máxima de bytes faturados, um erro semelhante a este será retornado:
Error: Query exceeded limit for bytes billed: 1000000. 10485760 or higher
required.
Para definir o máximo de bytes cobrados:
Console
- No Editor de consultas, clique em Mais > Configurações de consulta > Opções avançadas.
- No campo Máximo de bytes faturados, insira um número inteiro.
- Clique em Salvar.
bq
Use o comando bq query
com a sinalização --maximum_bytes_billed
.
bq query --maximum_bytes_billed=1000000 \ --use_legacy_sql=false \ 'SELECT word FROM `bigquery-public-data`.samples.shakespeare'
API
Defina a propriedade maximumBytesBilled
em JobConfigurationQuery
ou QueryRequest
.
Evite usar LIMIT
em tabelas não em cluster
Prática recomendada: para tabelas não em cluster, não use uma cláusula LIMIT
como
método de controle de custos.
Para tabelas não em cluster, aplicar uma cláusula LIMIT
a uma consulta não afeta
a quantidade de dados lidos. Você é cobrado pela leitura de todos os bytes em
toda a tabela conforme indicado pela consulta, mesmo que ela retorne apenas um
subconjunto. Com uma tabela em cluster, uma cláusula LIMIT
pode reduzir o número de bytes verificados, porque a verificação é interrompida quando blocos suficientes são verificados para conseguir o resultado. Você receberá cobranças apenas pelos bytes verificados.
Materialize os resultados da consulta em etapas
Prática recomendada: se possível, materialize os resultados da consulta em etapas.
Se você criar uma consulta grande e de vários estágios, cada vez que você a executar, o BigQuery lerá todos os dados exigidos por ela. A cobrança será realizada com base em todos os dados lidos sempre que a consulta for executada.
Em vez disso, divida sua consulta em etapas de modo que cada uma materialize os resultados da consulta, gravando-os em uma tabela de destino. Consultar a tabela de destino menor reduz a quantidade de dados lidos e reduz os custos. O custo de armazenamento de resultados materializados é muito inferior ao custo do processamento de grandes quantidades de dados.
Controlar os custos da carga de trabalho
Esta seção descreve as práticas recomendadas para controlar custos em uma carga de trabalho. Uma carga de trabalho é um conjunto de consultas relacionadas. Por exemplo, uma carga de trabalho pode ser um pipeline de transformação de dados executado diariamente, um conjunto de painéis executado por um grupo de analistas de negócios ou várias consultas ad hoc executadas por um conjunto de cientistas de dados.
Usar a Google Cloud calculadora de preços
Prática recomendada:use a Google Cloud calculadora de preços para criar uma estimativa de custo mensal geral para o BigQuery com base na projeção de uso. Em seguida, compare essa estimativa com seus custos reais para identificar áreas que precisam de otimização.
Sob demanda
Para estimar os custos na calculadora de preçosGoogle Cloud ao usar o modelo de preços sob demanda, siga estas etapas:
- Abra a calculadora de preços doGoogle Cloud .
- Clique em Adicionar à estimativa.
- Selecione BigQuery.
- Selecione "Sob demanda" em Tipo de serviço.
- Escolha o local em que as consultas serão executadas.
- Em Quantidade de dados consultados, insira os bytes estimados lidos da sua simulação ou do validador de consulta.
- Insira suas estimativas de uso para Armazenamento ativo, Armazenamento de longo prazo, Inserções por streaming e Leituras de streaming. Você só precisa estimar o armazenamento físico ou o lógico, dependendo do modelo de faturamento do armazenamento do conjunto de dados.
- A estimativa aparece no painel Detalhes do custo. Para mais informações sobre o custo estimado, clique em Abrir a visualização detalhada. Também é possível fazer o download e compartilhar a estimativa de custo.
Para saber mais informações, consulte Preços sob demanda.
Edições
Para estimar os custos na calculadora de preçosGoogle Cloud ao usar o modelo de preços baseado em capacidade com as edições do BigQuery, siga estas etapas:
- Abra a calculadora de preços doGoogle Cloud .
- Clique em Adicionar à estimativa.
- Selecione BigQuery.
- Selecione "Edições" em Tipo de serviço.
- Escolha o local onde os slots são usados.
- Escolha sua Edição.
- Escolha as opções Slots máximos, Slots de referência, Compromisso opcionais e Uso estimado do escalonamento automático.
- Escolha o local onde os dados são armazenados.
- Insira suas estimativas de uso para Armazenamento ativo, Armazenamento de longo prazo, Inserções por streaming e Leituras de streaming. Você só precisa estimar o armazenamento físico ou o lógico, dependendo do modelo de faturamento do armazenamento do conjunto de dados.
- A estimativa aparece no painel Detalhes do custo. Para mais informações sobre o custo estimado, clique em Abrir a visualização detalhada. Também é possível fazer o download e compartilhar a estimativa de custo.
Para mais informações, consulte Preços baseados na capacidade.
Usar reservas e compromissos
Prática recomendada:use as reservas e os compromissos do BigQuery para controlar custos.
Para mais informações, consulte Restringir custos para cada modelo de preços.
Usar o estimador de slots
Prática recomendada:use o estimador de slots para estimar o número de slots necessários para suas cargas de trabalho.
O estimador de slot do BigQuery ajuda a gerenciar a capacidade do slot com base em métricas de desempenho histórico.
Além disso, os clientes que usam o modelo de preços sob demanda podem conferir recomendações de dimensionamento para compromissos e reservas de escalonamento automático com desempenho semelhante ao migrar para o preço baseado em capacidade.
Cancelar jobs de longa duração desnecessários
Para liberar capacidade, verifique se os jobs de longa duração precisam continuar em execução. Caso contrário, cancele elas.
Conferir custos usando um painel
Prática recomendada:crie um painel para analisar os dados do Cloud Billing e monitorar e ajustar o uso do BigQuery.
É possível exportar seus dados de faturamento para o BigQuery e visualizá-los em uma ferramenta como o Looker Studio. Para conferir um tutorial sobre como criar um painel de faturamento, consulte Visualizar Google Cloud o faturamento usando o BigQuery e o Looker Studio.
Usar orçamentos e alertas de faturamento
Prática recomendada:use os orçamentos do Cloud Billing para monitorar as cobranças do BigQuery em um só lugar.
Com os orçamentos do Cloud Billing, você pode acompanhar os custos reais em relação aos custos planejados. Depois de definir um valor de orçamento, defina regras de limite de alerta de orçamento que serão usadas para acionar notificações por e-mail. Os e-mails de alerta de orçamento ajudam a acompanhar os gastos do BigQuery em relação ao orçamento.
Controlar os custos de armazenamento
Use estas práticas recomendadas para otimizar o custo do armazenamento do BigQuery. Também é possível otimizar o armazenamento para melhorar a performance da consulta.
Usar o armazenamento de longo prazo
Prática recomendada:use o preço de armazenamento de longo prazo para reduzir o custo de dados mais antigos.
Quando você carrega dados no armazenamento do BigQuery, eles estão sujeitos aos Preços de armazenamento do BigQuery. Para dados mais antigos, aproveite automaticamente os preços de armazenamento em longo prazo do BigQuery.
Se você tem uma tabela que não é modificada por 90 dias consecutivos, o preço do armazenamento dessa tabela diminui automaticamente em 50%. Se você tiver uma tabela particionada, cada partição será considerada separadamente para qualificação para preços de longo prazo sujeitos às mesmas regras das tabelas não particionadas.
Configurar o modelo de faturamento do armazenamento
Prática recomendada: otimize o modelo de faturamento do armazenamento com base nos padrões de uso.
O BigQuery oferece suporte ao faturamento de armazenamento usando ou bytes físicos (compactados) ou lógicos (não compactados) ou uma combinação dos dois. O modelo de faturamento do armazenamento configurado para cada conjunto de dados determina o preço do armazenamento, mas não afeta o desempenho das consultas.
É possível usar as visualizações INFORMATION_SCHEMA
para determinar o modelo de faturamento do armazenamento
que funcione melhor com base nos seus padrões de uso.
Evite substituir tabelas
Prática recomendada:ao usar o modelo de faturamento de armazenamento físico, evite substituir tabelas repetidamente.
Quando você substitui uma tabela, por exemplo, usando o parâmetro --replace
em jobs de carregamento em lote
ou usando a instrução SQL TRUNCATE TABLE
,
os dados substituídos são mantidos durante a duração da viagem no tempo e dos intervalos de failsafe.
Se você substituir uma tabela com frequência, vai receber cobranças de armazenamento adicionais.
Em vez disso, é possível carregar dados incrementalmente em uma tabela usando o parâmetro WRITE_APPEND
em jobs de carregamento, a instrução SQL MERGE
ou a
API de gravação de armazenamento.
Reduzir a janela de viagem no tempo
Prática recomendada:com base nos requisitos, você pode reduzir a janela de viagem no tempo.
Reduzir a janela de viagem no tempo do valor padrão de sete dias reduz o período de retenção dos dados excluídos ou alterados em uma tabela. Você é cobrado pelo armazenamento de viagem no tempo somente quando usar a versão física (compactada) do modelo de faturamento do armazenamento.
A janela de viagem no tempo é definida no nível do conjunto de dados. Também é possível definir a janela de viagem no tempo padrão para novos conjuntos de dados usando as configurações.
Usar a expiração da tabela para tabelas de destino
Prática recomendada: se você estiver gravando grandes resultados de consulta em uma tabela de destino, use o prazo de validade padrão da tabela para remover os dados quando não forem mais necessários.
Manter grandes conjuntos de resultados armazenados no BigQuery gera um custo. Se você não precisa de acesso permanente aos resultados, use a expiração padrão da tabela para excluir os dados automaticamente para você.
Arquivar dados para o Cloud Storage
Prática recomendada: arquive dados no Cloud Storage.
Mova os dados do BigQuery para o Cloud Storage com base na necessidade comercial de arquivamento. Como prática recomendada, considere os preços de armazenamento de longo prazo e o modelo de faturamento de armazenamento físico antes de exportar dados do BigQuery.
A seguir
- Saiba mais sobre o preço do BigQuery.
- Saiba como otimizar consultas.
- Saiba como otimizar o armazenamento.
Para saber mais sobre faturamento, alertas e visualização de dados, consulte os seguintes tópicos: