Introdução ao Reservations

O BigQuery Reservations permite que você alterne entre o preço sob demanda e fixo. Com preços fixos, compre capacidade dedicada de processamento de consultas. É possível alocar essa capacidade em toda a organização reservando pools de capacidade para diferentes projetos ou partes da organização. Também é possível combinar os dois modelos de faturamento, aproveitando os preços fixos e sob demanda.

Visão geral

O BigQuery oferece dois modelos de preços para análise:

  • Preços sob demanda: você paga pelos dados verificados nas suas consultas. O custo é baseado no número de bytes processados.
  • Preços fixos: você adquire capacidade de processamento de consultas dedicada.

Por padrão, as cobranças são feitas de acordo com o modelo de preços sob demanda. Com as reservas do BigQuery, é possível mudar para o preços fixos adquirindo compromissos. Os compromissos são adquiridos em unidades de slots do BigQuery. O custo de todos os bytes processados está incluído no preço fixo.

Os benefícios do uso do BigQuery Reservations incluem:

  • Previsibilidade. O preço fixo oferece custos previsíveis e consistentes. Você sabe antecipadamente o que está gastando.

  • Flexibilidade. É possível escolher a quantidade de capacidade a ser adquirida. Você recebe uma taxa fixa por segundo até excluir o compromisso de capacidade. É possível combinar os dois modelos de faturamento. Por exemplo, é possível executar algumas cargas de trabalho com preços sob demanda e outras com preços fixos.

    O BigQuery oferece preços fixos com desconto se você adquirir um compromisso mínimo mensal ou anual.

  • Gerenciamento de carga de trabalho. Depois de adquirir os slots, é possível atribuí-los às cargas de trabalho. Dessa forma, uma carga de trabalho tem um pool dedicado de recursos computacionais do BigQuery disponíveis para uso. Ao mesmo tempo, se uma carga de trabalho não usar todos os slots alocados, os slots não utilizados serão compartilhados entre as outras cargas de trabalho automaticamente.

  • Compra centralizada: você pode comprar e alocar slots para toda a organização. Não é necessário comprar slots para cada projeto que usa o BigQuery.

Compromissos

Conceitos do Reservations.

Um compromisso de capacidade é uma compra de capacidade de computação do BigQuery por um período mínimo. Os compromissos são medidos em slots do BigQuery, que são uma unidade de capacidade computacional. Um slot representa uma CPU virtual usada pelo BigQuery. Geralmente, se você comprar mais slots, poderá executar mais consultas ao mesmo tempo. Além disso, as consultas complexas serão executadas com mais rapidez.

O BigQuery oferece vários tipos de planos de compromisso Elas diferem principalmente pelo custo e pela duração mínima do seu compromisso. Para informações atualizadas sobre preços, consulte os preços de taxa fixa.

  • Compromisso mensal. Você adquire um compromisso de 30 dias. Após 30 dias, é possível cancelar o plano a qualquer momento.

  • Compromisso anual. Você compra um compromisso de 365 dias. É possível escolher se quer renovar automaticamente, cancelar ou converter para um plano diferente após 365 dias.

  • Slots flexíveis: Compre um compromisso de 60 segundos. É possível cancelar a qualquer momento após 60 segundos. Slots flexíveis são uma boa maneira de testar o desempenho das cargas de trabalho com faturamento de taxa fixa antes de adquirir um compromisso de longo prazo. Eles também são úteis para lidar com a demanda cíclica ou sazonal ou para eventos de alta carga, como a temporada fiscal.

Independentemente do plano selecionado, os slots não expiram no final do período de compromisso. Você mantém os slots e é cobrado por eles até que sejam excluídos. Também é possível alterar o tipo de plano após a duração mínima.

Os slots estão sujeitos à disponibilidade de capacidade. Quando você tenta adquirir compromissos de slots, o sucesso dessa compra não é garantido. No entanto, quando você conseguir comprar um compromisso, a capacidade será garantida até o cancelamento.

Para mais detalhes sobre esses planos, consulte Planos de compromisso (em inglês).

Reservas

Depois de comprar slots, atribua-os a buckets diferentes, chamados de reservas. As reservas permitem alocar os slots de maneira específica para sua organização.

Por exemplo, é possível criar uma reserva nomeada prod para cargas de trabalho de produção e outra reserva nomeada test para testes. Dessa forma, os jobs de teste não consumirão os recursos que as cargas de trabalho de produção precisam. Também é possível criar reservas para departamentos diferentes da organização.

Uma reserva nomeada default é criada automaticamente quando ao comprar slots. Não há nada de especial na reserva default. Ela é criada para facilitar. Você pode decidir se precisará de outras reservas ou usar apenas a reserva padrão.

Atividades

Para usar os slots que você comprou, atribua projetos, pastas ou organizações às reservas. Cada nível na hierarquia de recursos herda a atribuição do nível acima, a menos que você modifique. Em outras palavras, o projeto herda a atribuição da pasta pai, e a pasta herda a atribuição da organização. Para mais informações sobre a hierarquia de recursos do Google Cloud, consulte Hierarquia de recursos.

Quando um job é iniciado a partir de um projeto atribuído a uma reserva, ele usa os slots dessa reserva. Se um projeto não for atribuído a uma reserva, seja diretamente ou herdado da pasta pai ou organização, os jobs nesse projeto usarão preços sob demanda.

Atribuições None representam a ausência de atribuição. Os projetos atribuídos a None usam preços sob demanda. O caso de uso comum de atribuições None é atribuir uma organização à reserva e desativar alguns projetos ou pastas dessa reserva atribuindo None a eles. Para mais informações, consulte Atribuir um projeto a None.

Ao criar uma atribuição, especifique o tipo de tarefa para essa atribuição:

  • QUERY: use essa reserva para jobs de consulta, incluindo consultas SQL, DDL, DML e BigQuery ML.

  • PIPELINE: use esta reserva para jobs de carregamento, exportação e outros jobs do pipeline.

    Por padrão, os jobs de carregamento e exportação são gratuitos e usam um pool compartilhado de slots. O BigQuery não garante a capacidade disponível desse pool compartilhado ou sobre a capacidade que você verá. Se você estiver carregando grandes quantidades de dados, o job poderá aguardar à medida que os slots ficam disponíveis. Nesse caso, talvez você queira comprar slots dedicados e atribuir jobs de pipeline a eles. Recomendamos a criação de uma reserva dedicada adicional com o compartilhamento de slot inativo desativado.

    Quando jobs de carregamento são atribuídos a uma reserva, eles perdem o acesso ao pool gratuito. Monitore o desempenho para garantir que os jobs tenham capacidade suficiente. Caso contrário, o desempenho pode ser pior do que usar o pool gratuíto.

  • ML_EXTERNAL: use essa reserva para consultas do BigQuery ML que usam serviços externos ao BigQuery.

    Algumas consultas do BigQuery ML usam serviços externos ao BigQuery. Para usar slots reservados com esses serviços externos, crie uma atribuição com o tipo de job ML_EXTERNAL. Para mais informações, consulte Atribuir slots às cargas de trabalho do BigQuery ML.

Programação de slots

Os slots são distribuídos de forma justa entre os projetos e depois dentro dos jobs do projeto.

O programador do BigQuery impõe o compartilhamento igualitário de slots entre projetos com consultas em execução em uma reserva e, em seguida, nos jobs de um determinado projeto. O programador fornece uma igualdade eventual. Talvez haja períodos curtos em que alguns jobs recebam uma parcela desproporcional de slots, mas isso será corrigido pelo programador. O objetivo é encontrar um equilíbrio entre ser muito agressivo na remoção de tarefas em execução (o que resulta em desperdício de tempo do slot) e ser muito tolerante (o que resulta em jobs com longas tarefas em execução recebendo uma parcela desproporcional do tempo de slot).

Se um job importante precisar de mais slots de maneira consistente do que recebe do programador, procure criar uma reserva adicional com um número garantido de slots e atribuir o job a essa reserva. Para mais informações, consulte Gerenciamento de carga de trabalho.

Slots inativos

É possível que alguns slots fiquem inativos a qualquer momento. Isso inclui:

  • slots não atribuídos a nenhuma reserva;
  • slots que estão atribuídos a uma reserva, mas não estão em uso no momento.

Por padrão, as consultas em execução em uma reserva usam automaticamente slots ociosos de outras reservas. Isso significa que um job sempre poderá ser executado enquanto houver capacidade. A capacidade inativa é imediatamente preemptiva para a reserva atribuída original conforme necessário, independentemente da prioridade da consulta que precisa dos recursos. Isso acontece automaticamente em tempo real.

Para desativar essa funcionalidade e forçar uma reserva a usar somente os slots provisionados, defina ignore_idle_slots como true. As reservas com ignore_idle_slots definido como true não recebem slots inativos.

Enquanto ignore_idle_slots for falso, uma reserva poderá ter uma contagem de slots de 0 e ainda ter acesso a slots não utilizados. Se você estiver usando apenas a reserva default, recomendamos configurá-la dessa maneira.

As atribuições do tipo ML_EXTERNAL são uma exceção ao comportamento descrito acima. Os slots usados por esses jobs não têm capacidade de preempção, ou seja, não estão disponíveis para outros jobs em execução na reserva. Além disso, eles não usam slots ociosos de outras reservas.

A seguir