Compre e faça a gestão de compromissos de horários

A API BigQuery Reservation permite-lhe comprar slots dedicados (denominados compromissos), criar pools de slots (denominados reservas) e atribuir projetos, pastas e organizações a essas reservas.

Uma consolidação de capacidade é uma compra de capacidade de computação do BigQuery durante um período mínimo. A compra de um compromisso de capacidade é opcional quando cria uma reserva com uma edição, mas pode proporcionar poupanças de custos.

Os compromissos são um recurso regional. Não é possível usar compromissos comprados numa região ou em várias regiões noutras regiões ou em várias regiões. Não é possível mover compromissos entre regiões ou entre regiões e multirregiões.

Ative a API Reservations

A API BigQuery Reservation é diferente da API BigQuery existente e tem de ser ativada de forma independente. Para mais informações, consulte Ativar e desativar APIs.

  • O nome da API é "API BigQuery Reservations"
  • O ponto final da API BigQuery Reservation é bigqueryreservation.googleapis.com.

Ative a API.

Comprar slots

Para reservar capacidade durante um período mínimo, pode comprar um compromisso de capacidade. Isto oferece um desconto e permite poupar nos custos. Para mais informações acerca dos custos específicos, consulte os preços do BigQuery.

Autorizações necessárias

Para criar um compromisso de capacidade, precisa da seguinte autorização de gestão de identidade e acesso (IAM):

Cada uma das seguintes funções de IAM predefinidas inclui esta autorização:

  • BigQuery Admin
  • BigQuery Resource Admin

Para mais informações sobre as funções de IAM no BigQuery, consulte o artigo Funções e autorizações predefinidas.

Crie uma consolidação de capacidade

Os compromissos são um recurso regional. Não é possível usar compromissos comprados numa região ou em várias regiões noutras regiões ou em várias regiões. Não é possível mover compromissos entre regiões ou entre regiões e multirregiões.

Consola

  1. Na Google Cloud consola, aceda à página do BigQuery.

    Aceda ao BigQuery

  2. No menu de navegação, clique em Gestão da capacidade.

  3. Clique em Criar compromisso.

  4. Em Configurar:

    1. Selecione a localização.
    2. Na secção Modelo de capacidade, selecione o modelo de capacidade.
    3. Se selecionar a opção Autoscaling (Edition):
      1. Na lista Edição, selecione a edição. Os compromissos de capacidade só são suportados nas edições Enterprise e Enterprise Plus. O dimensionamento automático só está disponível numa edição. Para mais informações sobre as edições, consulte o artigo Introdução às edições do BigQuery.
    4. Selecione a Duração do compromisso, que especifica o seu plano de compromisso.
    5. Se estiver a comprar um compromisso anual, selecione o plano de renovação que quer que entre em vigor quando o compromisso expirar:

      1. Renovação anual. Quando o compromisso anual expira, é renovado por mais um ano como compromisso anual.

      Para mais informações, consulte o artigo Compromissos de espaços.

    6. Introduza o Número de vagas que quer comprar.

    7. Clicar em Seguinte.

  5. Reveja a estimativa do Custo da sua compra.

  6. Em Confirmar e enviar:

    1. Introduza CONFIRMAR para confirmar a compra.
    2. Clique em Comprar para comprar os slots.
  7. Para ver o compromisso, clique em Ver compromissos de espaço. Depois de o aprovisionamento da capacidade ser feito, o compromisso de capacidade pedido tem o estado verde.

Quando compra capacidade pela primeira vez, é criada uma reserva default.

SQL

Para criar um compromisso de capacidade, use a CREATE CAPACITY declaração DDL.

  1. Na Google Cloud consola, aceda à página BigQuery.

    Aceda ao BigQuery

  2. No editor de consultas, introduza a seguinte declaração:

    CREATE CAPACITY
      `ADMIN_PROJECT_ID.region-LOCATION.COMMITMENT_ID`
    OPTIONS (
      slot_count = NUMBER_OF_SLOTS,
      edition = EDITION,
      plan = 'PLAN_TYPE');

    Substitua o seguinte:

    • ADMIN_PROJECT_ID: o ID do projeto do projeto de administração que vai manter a propriedade deste compromisso
    • LOCATION: a localização do compromisso
    • COMMITMENT_ID: o ID do compromisso

      Tem de ser exclusivo do projeto e da localização. Tem de começar e terminar com uma letra minúscula ou um número e conter apenas letras minúsculas, números e traços.

    • NUMBER_OF_SLOTS: o número de slots a comprar
    • EDITION: a edição associada ao compromisso de capacidade. Só pode criar um compromisso de capacidade com as edições Enterprise ou Enterprise Plus. Para saber mais acerca das edições, consulte o artigo Introdução às edições do BigQuery.
    • PLAN_TYPE: o tipo de plano, como ANNUAL ou THREE_YEAR.

  3. Clique em Executar.

Para mais informações sobre como executar consultas, consulte o artigo Execute uma consulta interativa.

bq

Use o comando bq mk com a flag --capacity_commitment para comprar espaços.

bq mk \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --capacity_commitment=true \
    --edition=EDITION \
    --plan=PLAN_TYPE \
    --renewal_plan=RENEWAL_PLAN_TYPE \
    --slots=NUMBER_OF_SLOTS

Substitua o seguinte:

Veja as consolidações de capacidade

Autorizações necessárias

Para ver compromissos, precisa da seguinte autorização de gestão de identidade e de acesso (IAM):

Cada uma das seguintes funções de IAM predefinidas inclui esta autorização:

  • BigQuery Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor
  • BigQuery Resource Viewer
  • BigQuery User

Para mais informações sobre as funções de IAM no BigQuery, consulte o artigo Funções e autorizações predefinidas.

Veja as consolidações de capacidade por projeto

Para ver as suas consolidações de capacidade por projeto:

Consola

  1. Na Google Cloud consola, aceda à página do BigQuery.

    Aceda ao BigQuery

  2. No menu de navegação, clique em Gestão da capacidade.

  3. Clique no separador Compromissos de horários. Os seus compromissos de capacidade são apresentados na tabela em Compromissos.

SQL

Para ver os compromissos de um projeto de administração, consulte a vista INFORMATION_SCHEMA.CAPACITY_COMMITMENTS_BY_PROJECT.

  1. Na Google Cloud consola, aceda à página BigQuery.

    Aceda ao BigQuery

  2. No editor de consultas, introduza a seguinte declaração:

    SELECT
      capacity_commitment_id
    FROM
      `region-LOCATION`.INFORMATION_SCHEMA.CAPACITY_COMMITMENTS_BY_PROJECT
    WHERE
      project_id = 'ADMIN_PROJECT_ID'
      AND slot_count = 100;

    Substitua o seguinte:

  3. Clique em Executar.

Para mais informações sobre como executar consultas, consulte o artigo Execute uma consulta interativa.

bq

Use o comando bq ls com a flag --capacity_commitment para listar os compromissos de um projeto de administração.

bq ls \
    --capacity_commitment=true \
    --location=LOCATION \
    --project_id=ADMIN_PROJECT_ID

Substitua o seguinte:

Atualizar consolidações de capacidade

Pode fazer as seguintes atualizações a uma consolidação de capacidade:

  • Atualize o plano de renovação do compromisso
  • Converter um compromisso num plano de compromisso com uma duração mais longa.
  • Dividir um compromisso em dois compromissos.
  • Unir dois compromissos num único compromisso.

Autorizações necessárias

Para atualizar os compromissos de capacidade, precisa da seguinte autorização de gestão de identidade e de acesso (IAM):

Cada uma das seguintes funções de IAM predefinidas inclui esta autorização:

  • BigQuery Admin
  • BigQuery Resource Admin

Para mais informações sobre as funções de IAM no BigQuery, consulte o artigo Funções e autorizações predefinidas.

Renove um compromisso

Os compromissos anuais têm um plano de renovação, que especifica quando cria ou converte para um compromisso anual. Pode alterar o plano de renovação do compromisso anual em qualquer altura antes da data de fim do compromisso.

Consola

Pode alterar o seu plano de renovação para um compromisso anual da seguinte forma:

  1. Na Google Cloud consola, aceda à página do BigQuery.

    Aceda ao BigQuery

  2. No menu de navegação, clique em Gestão da capacidade.

  3. Clique no separador Compromissos de horários.

  4. Encontre o compromisso que quer editar.

  5. Clique em Ações e, de seguida, selecione a opção Editar plano de renovação.

  6. Selecione o novo plano de renovação.

bq

Para alterar a escolha do plano de renovação de um compromisso anual, use o comando bq update com a flag --capacity_commitment e a flag --renewal_plan.

bq update \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --renewal_plan=PLAN_TYPE \
    --capacity_commitment=true \
    COMMITMENT_ID

Substitua o seguinte:

Converta um compromisso numa duração mais longa

Pode optar por converter o seu compromisso num tipo de compromisso de duração mais longa em qualquer altura. Isto funciona mesmo que queira converter um plano antigo numa edição.

Assim que atualizar o seu compromisso, é-lhe cobrada a tarifa associada ao novo plano, e a data de fim é reposta.

Para converter um compromisso, use o comando bq update com a flag --plan.

bq update \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --plan=PLAN_TYPE \
    --renewal_plan=RENEWAL_PLAN \
    --capacity_commitment=true \
    COMMITMENT_ID

Substitua o seguinte:

Divida um compromisso

Pode dividir o seu compromisso em dois compromissos. Isto pode ser útil se quiser renovar parte de um compromisso. Por exemplo, se tiver um compromisso anual de 1000 espaços, pode dividir 300 espaços num novo compromisso, deixando 700 espaços no compromisso original. Em seguida, pode renovar 700 espaços à tarifa anual e converter 300 espaços num compromisso de três anos. Pode dividir um compromisso em incrementos de 50 horários disponíveis.

Quando divide um compromisso, o novo compromisso tem o mesmo plano e a mesma data de fim do compromisso que o compromisso original.

Consola

  1. Na Google Cloud consola, aceda à página do BigQuery.

    Aceda ao BigQuery

  2. No menu de navegação, clique em Gestão da capacidade.

  3. Clique no separador Compromissos de horários.

  4. Selecione o compromisso que quer dividir.

  5. Clique em Dividir.

  6. Na página Dividir compromisso, use o controlo de deslize Configurar divisão para selecionar quantos espaços vão para cada divisão, em incrementos de 50 espaços.

  7. Clique em Dividir para dividir o compromisso. O novo compromisso é apresentado no separador Compromissos de espaço.

bq

Para dividir compromissos, use o comando bq update.

bq update \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --split \
    --slots=SLOTS_TO_SPLIT \
    --capacity_commitment=true \
    COMMITMENT_ID

Substitua o seguinte:

  • ADMIN_PROJECT_ID: o ID do projeto
  • LOCATION: a localização do compromisso
  • SLOTS_TO_SPLIT: o número de horários a dividir do compromisso original num novo compromisso
  • COMMITMENT_ID: o ID do compromisso

    Para obter o ID, consulte o artigo Veja os compromissos comprados.

Una dois compromissos

Pode unir vários compromissos num só. Todos os compromissos de união têm de ser do mesmo tipo (ANNUAL ou THREE_YEAR). A data de conclusão do compromisso combinado é a data de conclusão máxima dos compromissos originais. Se algum dos compromissos tiver uma data de fim anterior, estes são prolongados até à data posterior, e é cobrado um valor proporcional por esses espaços.

Consola

  1. Na Google Cloud consola, aceda à página do BigQuery.

    Aceda ao BigQuery

  2. No menu de navegação, clique em Gestão da capacidade.

  3. Clique no separador Compromissos de horários.

  4. Selecione os compromissos que quer unir.

  5. Clique em Unir.

  6. Na página Unir compromissos, reveja os detalhes da união e clique em Unir. O novo compromisso de união é apresentado no separador Compromissos de espaço.

bq

Para unir dois compromissos num só, use o comando bq update:

bq update \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --merge=true \
    --capacity_commitment=true \
    COMMITMENT1,COMMITMENT2

Substitua o seguinte:

  • ADMIN_PROJECT_ID: o ID do projeto
  • LOCATION: a localização dos compromissos
  • COMMITMENT1: o primeiro compromisso a unir
  • COMMITMENT2: o segundo compromisso a unir

Atualize as consolidações para uma nova edição

Não pode atualizar diretamente um compromisso para uma nova edição. Por exemplo, não pode atualizar um compromisso da edição Enterprise para a edição Enterprise Plus. Em alternativa, siga estes passos para atualizar um compromisso:

  1. Crie um novo compromisso. Escolha a edição atualizada adequada. Tenha em atenção que este novo compromisso tem uma data de fim do compromisso diferente da do seu compromisso atual.

  2. Contacte o apoio técnico para pedir o cancelamento do seu compromisso existente.

Expiração do compromisso

Os compromissos expiram no final da respetiva duração. Não pode eliminar um compromisso enquanto este estiver ativo. Se o plano de renovação estiver definido como NONE, o compromisso é eliminado automaticamente. Caso contrário, é renovado com um compromisso anual ou de três anos, consoante o plano de renovação. Para alterar o plano de renovação para NONE, siga os passos em Renove um compromisso.

Após a renovação de um compromisso, o valor de Hora de início não é alterado. Refere-se à hora de início do compromisso original. O valor de Hora de fim é a hora em que o compromisso renovado expira. Por exemplo, se tiver um compromisso anual criado a 13 de dezembro de 2022 e for renovado a 13 de dezembro de 2023. Se visualizar os detalhes do compromisso a 14 de dezembro de 2023, o valor de Hora de início seria 13 de dezembro de 2022 e o valor de Hora de fim seria 12 de dezembro de 2024.

Os espaços base são sempre cobrados. Se um compromisso de capacidade expirar, pode ter de ajustar manualmente a quantidade de espaços base nas suas reservas para evitar encargos indesejados. Por exemplo, considere que tem um compromisso de 1 ano com 100 horários disponíveis e uma reserva com 100 horários disponíveis de base. O compromisso expira e não tem um plano de renovação. Quando o compromisso expira, paga 100 espaços base à tarifa de pagamento conforme o uso.

Controle a criação de consolidações de capacidade

Pode usar políticas de recusa de IAM para ter controlo adicional sobre quem pode criar compromissos de capacidade.

As políticas de recusa podem ser criadas para um conjunto de utilizadores ou para todos, e podem ser configuradas com exceções e condições.

Por exemplo, a seguinte política nega a todos os utilizadores a autorização para criar compromissos de capacidade, exceto para o principal "lucian@example.com":

{
  "deniedPrincipals": [
    "principalSet://goog/public:all"
  ],
  "deniedPermissions": [
    "bigquery.googleapis.com/capacityCommitments.create"
  ],
  "exceptionPrincipals": [
    "principal://goog/subject/lucian@example.com"
  ]
}

Em seguida, esta política pode ser anexada a uma organização para controlar quem pode criar os compromissos.

Tenha em atenção que estas políticas têm precedência sobre as funções da IAM. Por isso, mesmo um utilizador com a função bigquery.admin não pode criar um compromisso, a menos que a política seja eliminada ou modificada.

Para mais informações, consulte o artigo Negue o acesso a recursos.

Resolução de problemas de consolidações de capacidade

Esta secção descreve os passos de resolução de problemas que podem ser úteis se encontrar problemas ao usar as reservas do BigQuery.

Os slots comprados estão pendentes

Os slots estão sujeitos à capacidade disponível. Quando compra compromissos de slots e o BigQuery os atribui, a coluna Estado apresenta uma marca de verificação. Se o BigQuery não conseguir atribuir imediatamente os slots pedidos, a coluna Estado permanece pendente. Pode ter de aguardar várias horas até que os slots fiquem disponíveis. Se precisar de acesso a horários disponíveis mais cedo, experimente o seguinte:

  1. Elimine o compromisso pendente.
  2. Compre um novo compromisso para um número menor de espaços. Consoante a capacidade, o compromisso mais pequeno pode ficar ativo imediatamente.
  3. Compre os restantes espaços como um compromisso separado. Estas posições podem ser apresentadas como pendentes na coluna Estado, mas geralmente ficam ativas em algumas horas.
  4. Opcional: quando ambos os compromissos estão disponíveis, pode uni-los num único compromisso, desde que tenha comprado o mesmo plano para ambos.

Se um compromisso de horário falhar ou demorar muito tempo a ser concluído, considere usar temporariamente os preços a pedido. Com esta solução, pode ter de executar consultas críticas num projeto diferente que não esteja atribuído a nenhuma reserva ou pode ter de remover completamente a atribuição do projeto.