Trabalhe com reservas de slots
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.
As reservas permitem-lhe atribuir um número dedicado de espaços
a uma carga de trabalho. Por exemplo, pode não querer que uma carga de trabalho de produção concorra com cargas de trabalho de teste por vagas. Pode criar uma reserva denominada prod
e atribuir as suas cargas de trabalho de produção a esta reserva. Para mais informações, consulte o artigo
Reservas.
Crie reservas
Autorizações necessárias
Para criar uma reserva, precisa da seguinte autorização de gestão de identidade e de acesso (IAM):
bigquery.reservations.create
no projeto de administração que mantém a propriedade dos compromissos.
Cada uma das seguintes funções de IAM predefinidas inclui esta autorização:
BigQuery Resource Editor
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 reserva com horários dedicados
Selecione uma das seguintes opções:
Consola
Na Google Cloud consola, aceda à página do BigQuery.
No menu de navegação, clique em Gestão da capacidade.
Clique em Criar reserva.
No campo Nome da reserva, introduza um nome para a reserva.
Na lista Localização, selecione a localização. Se selecionar uma localização do BigQuery Omni, a opção de edição está limitada à edição Enterprise.
Na lista Edição, selecione a edição. As funcionalidades da edição do BigQuery, como o dimensionamento automático, só estão disponíveis numa edição. Para mais informações, consulte o artigo Introdução às edições do BigQuery.
Na lista do seletor de tamanho máximo da reserva, selecione o tamanho máximo da reserva.
Opcional: no campo Intervalos de base, introduza o número de intervalos de base para a reserva.
O número de espaços de dimensionamento automático disponíveis é determinado subtraindo o valor de Espaços de base ao Tamanho máximo da reserva. Por exemplo, se criar uma reserva com 100 espaços base e um tamanho máximo de reserva de 400, a sua reserva tem 300 espaços de escalabilidade automática. Para mais informações sobre os horários de base, consulte o artigo Usar reservas com horários de base e de escalabilidade automática.
Para desativar a partilha de espaços inativos e usar apenas a capacidade de espaço especificada, clique no botão Ignorar espaços inativos.
Para expandir a secção Definições avançadas, clique na seta de expansão
.Opcional: para definir a simultaneidade de tarefas alvo, clique no botão ativar/desativar Substituir simultaneidade de tarefas alvo automática para o ativar e introduza a Simultaneidade de tarefas alvo.
A discriminação dos espaços é apresentada na tabela Estimativa de custos. É apresentado um resumo da reserva na tabela Resumo da capacidade.
Clique em Guardar.
A nova reserva fica visível no separador Reservas de horários.
SQL
Para criar uma reserva, use a
CREATE RESERVATION
declaração DDL.
Na Google Cloud consola, aceda à página BigQuery.
No editor de consultas, introduza a seguinte declaração:
CREATE RESERVATION `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME` OPTIONS ( slot_capacity = NUMBER_OF_BASELINE_SLOTS, edition = EDITION, autoscale_max_slots = NUMBER_OF_AUTOSCALING_SLOTS);
Substitua o seguinte:
ADMIN_PROJECT_ID
: o ID do projeto do projeto de administração que detém o recurso de reservaLOCATION
: a localização da reserva. Se selecionar uma localização do BigQuery Omni, a sua opção de edição está limitada à Enterprise Edition.RESERVATION_NAME
: o nome da reservaO nome só pode conter carateres alfanuméricos em minúsculas ou traços, tem de começar por uma letra e não pode terminar com um traço. O comprimento máximo é de 64 carateres.
NUMBER_OF_BASELINE_SLOTS
: o número de base de espaços a atribuir à reserva. Não pode definir a opçãoslot_capacity
e a opçãoedition
na mesma reserva.EDITION
: a edição da reserva. A atribuição de uma reserva a uma edição implica alterações de funcionalidades e preços. Para mais informações, consulte o artigo Introdução às edições do BigQuery.NUMBER_OF_AUTOSCALING_SLOTS
: o número de espaços de escala automática atribuídos à reserva. Isto é igual ao valor do tamanho máximo da reserva menos o número de espaços base.
Clique em
Executar.
Para mais informações sobre como executar consultas, consulte o artigo Execute uma consulta interativa.
bq
Para criar uma reserva, use o comando bq mk
com a flag --reservation
:
bq mk \ --project_id=ADMIN_PROJECT_ID \ --location=LOCATION \ --reservation \ --slots=NUMBER_OF_BASELINE_SLOTS \ --ignore_idle_slots=false \ --edition=EDITION \ --autoscale_max_slots=NUMBER_OF_AUTOSCALING_SLOTS \ --max_slots=MAXIMUM_NUMBER_OF_SLOTS --scaling_mode=SCALING_MODE RESERVATION_NAME
Substitua o seguinte:
ADMIN_PROJECT_ID
: o ID do projetoLOCATION
: a localização da reserva. Se selecionar uma localização do BigQuery Omni, a opção de edição está limitada à edição Enterprise.NUMBER_OF_BASELINE_SLOTS
: o número de espaços base a atribuir à reservaRESERVATION_NAME
: o nome da reserva. O nome só pode conter carateres alfanuméricos em minúsculas ou traços, tem de começar por uma letra e não pode terminar com um traço. O comprimento máximo é de 64 carateres.EDITION
: a edição da reserva. A atribuição de uma reserva a uma edição implica alterações de funcionalidades e preços. Para mais informações, consulte o artigo Introdução às edições do BigQuery.NUMBER_OF_AUTOSCALING_SLOTS
: o número de espaços de escala automática atribuídos à reserva. Isto é igual ao valor do tamanho máximo da reserva menos o número de espaços base. Não é possível configurar esta opção com as flags--max_slots
ou--scaling_mode
.MAXIMUM_NUMBER_OF_SLOTS
: o número máximo de espaços que a reserva pode consumir. Tem de configurar este valor com a flag--scaling_mode
(Pré-visualização).SCALING_MODE
: o modo de dimensionamento da reserva. As opções sãoALL_SLOTS
,IDLE_SLOTS_ONLY
ouAUTOSCALE_ONLY
. Tem de configurar este valor com a flag--scaling_mode
(Pré-visualização).
Para obter informações sobre a flag --ignore_idle_slots
, consulte o artigo
Espaços inativos. O valor predefinido é false
.
Terraform
Use o recurso
google_bigquery_reservation
.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
O exemplo seguinte cria uma reserva com o nome my-reservation
:
Para aplicar a configuração do Terraform num Google Cloud projeto, conclua os passos nas secções seguintes.
Prepare o Cloud Shell
- Inicie o Cloud Shell.
-
Defina o Google Cloud projeto predefinido onde quer aplicar as suas configurações do Terraform.
Só tem de executar este comando uma vez por projeto e pode executá-lo em qualquer diretório.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
As variáveis de ambiente são substituídas se definir valores explícitos no ficheiro de configuração do Terraform.
Prepare o diretório
Cada ficheiro de configuração do Terraform tem de ter o seu próprio diretório (também denominado módulo raiz).
-
No Cloud Shell, crie um diretório e um novo ficheiro nesse diretório. O nome do ficheiro tem de ter a extensão
.tf
, por exemplo,main.tf
. Neste tutorial, o ficheiro é denominadomain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Se estiver a seguir um tutorial, pode copiar o código de exemplo em cada secção ou passo.
Copie o exemplo de código para o ficheiro
main.tf
criado recentemente.Opcionalmente, copie o código do GitHub. Isto é recomendado quando o fragmento do Terraform faz parte de uma solução completa.
- Reveja e modifique os parâmetros de exemplo para aplicar ao seu ambiente.
- Guarde as alterações.
-
Inicialize o Terraform. Só tem de fazer isto uma vez por diretório.
terraform init
Opcionalmente, para usar a versão mais recente do fornecedor Google, inclua a opção
-upgrade
:terraform init -upgrade
Aplique as alterações
-
Reveja a configuração e verifique se os recursos que o Terraform vai criar ou
atualizar correspondem às suas expetativas:
terraform plan
Faça as correções necessárias à configuração.
-
Aplique a configuração do Terraform executando o seguinte comando e introduzindo
yes
no comando:terraform apply
Aguarde até que o Terraform apresente a mensagem "Apply complete!" (Aplicação concluída!).
- Abra o seu Google Cloud projeto para ver os resultados. Na Google Cloud consola, navegue para os seus recursos na IU para se certificar de que o Terraform os criou ou atualizou.
Python
Crie uma reserva previsível
Antes de criar uma reserva com um número máximo de vagas, tem de ativar primeiro a equidade baseada em reservas.
Ative a equidade baseada em reservas
Para ativar a equidade baseada em reservas, defina a enable_reservation_based_fairness
sinalização como
true
.
Para atualizar a equidade baseada em reservas num projeto, precisa da autorização bigquery.config.update
no projeto
que mantém a propriedade das reservas. A função predefinida BigQuery Admin
inclui esta autorização.
Para mais informações sobre como atualizar a configuração predefinida de um projeto, consulte o artigo Faça a gestão das definições de configuração.
ALTER PROJECT `PROJECT_NAME` SET OPTIONS ( `region-LOCATION.enable_reservation_based_fairness`= true);
Substitua o seguinte:
- PROJECT_NAME: o ID do projeto do projeto de administração
- LOCATION: a localização da reserva
Crie uma reserva previsível
Para criar uma reserva previsível com um número máximo de horários disponíveis, selecione uma das seguintes opções:
Consola
Na Google Cloud consola, aceda à página do BigQuery.
No painel de navegação, aceda à secção Gestão de capacidade e, de seguida, clique em Criar reserva.
No campo Nome da reserva, introduza um nome para a reserva.
Na lista Localização, selecione a localização. Se selecionar uma localização do BigQuery Omni, a opção de edição está limitada à edição Enterprise.
Na lista Edição, selecione a edição. O dimensionamento automático só está disponível numa edição. Para mais informações, consulte o artigo Compreenda as edições do BigQuery.
Na lista do seletor de tamanho máximo da reserva, selecione o tamanho máximo da reserva.
Opcional: no campo Intervalos de base, introduza o número de intervalos de base para a reserva.
O número de espaços de dimensionamento automático disponíveis é determinado subtraindo o valor de Espaços de base ao Tamanho máximo da reserva. Por exemplo, se criar uma reserva com 100 espaços base e um tamanho máximo de reserva de 400, a sua reserva tem 300 espaços de escalabilidade automática. Para mais informações sobre os horários de base, consulte o artigo Usar reservas com horários de base e de escalabilidade automática.
Para desativar a partilha de espaços inativos e usar apenas a capacidade de espaço especificada, clique no botão Ignorar espaços inativos.
Para expandir a secção Definições avançadas, clique na seta de expansão
.- Na lista Como usar espaços vazios?, selecione a opção de configuração.
A discriminação dos espaços é apresentada na tabela Estimativa de custos. É apresentado um resumo da reserva na tabela Resumo da capacidade.
Clique em Guardar.
A nova reserva fica visível no separador Reservas de horários.
bq
Para criar uma reserva previsível, use o comando bq mk
com a flag --reservation
e defina o valor de max_slots
e scaling_mode
:
bq mk \ --project_id=ADMIN_PROJECT_ID \ --location=LOCATION \ --reservation \ --slots=NUMBER_OF_BASELINE_SLOTS \ --ignore_idle_slots=false \ --edition=EDITION \ --max_slots=MAXIMUM_NUMBER_OF_SLOTS \ --scaling_mode=SCALING_MODE RESERVATION_NAME
Substitua o seguinte:
ADMIN_PROJECT_ID
: o ID do projetoLOCATION
: a localização da reserva. Se selecionar uma localização do BigQuery Omni, a opção de edição está limitada à edição Enterprise.NUMBER_OF_BASELINE_SLOTS
: o número de espaços base a atribuir à reservaRESERVATION_NAME
: o nome da reservaEDITION
: a edição da reserva. A atribuição de uma reserva a uma edição implica alterações de funcionalidades e preços. Para mais informações, consulte o artigo Introdução às edições do BigQuery.MAXIMUM_NUMBER_OF_SLOTS
: o número máximo de espaços que a reserva pode consumir. Tem de configurar este valor com a flag--scaling_mode
(Pré-visualização).SCALING_MODE
: o modo de dimensionamento da reserva. As opções sãoALL_SLOTS
,IDLE_SLOTS_ONLY
ouAUTOSCALE_ONLY
. Tem de configurar este valor com a flag--scaling_mode
(Pré-visualização).
Para obter informações sobre a flag --ignore_idle_slots
, consulte o artigo
Espaços inativos. O valor predefinido é false
.
Para saber mais sobre as reservas previsíveis, consulte o artigo Reservas previsíveis.
Atualize reservas
Pode fazer as seguintes atualizações a uma reserva:
- Altere o tamanho da reserva adicionando ou removendo espaços.
- Configure se as consultas nesta reserva usam espaços livres.
- Altere a quantidade de espaços de base ou de dimensionamento automático atribuídos a uma reserva.
- Defina a concorrência de tarefas alvo.
Para alterar a edição de uma reserva, primeiro elimine a reserva e, em seguida, crie uma reserva com a edição atualizada.
Autorizações necessárias
Para atualizar uma reserva, precisa da seguinte autorização de gestão de identidade e de acesso (IAM):
bigquery.reservations.update
no projeto de administração que mantém a propriedade dos compromissos.
Cada uma das seguintes funções de IAM predefinidas inclui esta autorização:
BigQuery Admin
BigQuery Resource Admin
BigQuery Resource Editor
Para mais informações sobre as funções de IAM no BigQuery, consulte o artigo Funções e autorizações predefinidas.
Altere o tamanho de uma reserva
Pode adicionar ou remover horários de uma reserva existente.
Consola
Na Google Cloud consola, aceda à página do BigQuery.
No menu de navegação, clique em Gestão da capacidade.
Clique no separador Reservas de horários.
Encontre a reserva que quer atualizar.
Expanda a opção
Ações.Clique em Edit.
Na caixa de diálogo Seletor de tamanho máximo da reserva, introduza o tamanho máximo da reserva.
No campo Intervalos base, introduza o número de intervalos base.
Para expandir a secção Definições avançadas, clique na seta de expansão
.Opcional: para definir a simultaneidade de tarefas alvo, clique no botão ativar/desativar Substituir simultaneidade de tarefas alvo automática para o ativar e introduza a Simultaneidade de tarefas alvo.
Clique em Guardar.
SQL
Para alterar o tamanho de uma reserva, use a declaração de linguagem de definição de dados (LDD) ALTER RESERVATION SET OPTIONS
.
Na Google Cloud consola, aceda à página BigQuery.
No editor de consultas, introduza a seguinte declaração:
ALTER RESERVATION `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME` SET OPTIONS ( slot_capacity = NUMBER_OF_BASELINE_SLOTS, autoscale_max_slots = NUMBER_OF_AUTOSCALING_SLOTS);
Substitua o seguinte:
ADMIN_PROJECT_ID
: o ID do projeto do projeto de administração que detém o recurso de reservaLOCATION
: a localização da reserva, por exemplo,europe-west9
.RESERVATION_NAME
: o nome da reserva. O nome só pode conter carateres alfanuméricos em minúsculas ou traços, tem de começar por uma letra e não pode terminar com um traço. O comprimento máximo é de 64 carateres.NUMBER_OF_BASELINE_SLOTS
: o número de espaços de base a atribuir à reserva.NUMBER_OF_AUTOSCALING_SLOTS
: o número de espaços de escala automática atribuídos à reserva. Isto é igual ao valor do tamanho máximo da reserva menos o número de espaços base.
Clique em
Executar.
Para mais informações sobre como executar consultas, consulte o artigo Execute uma consulta interativa.
bq
Para atualizar o tamanho de uma reserva, use o comando bq update
com a flag --reservation
:
bq update \ --project_id=ADMIN_PROJECT_ID \ --location=LOCATION \ --slots=NUMBER_OF_BASELINE_SLOTS \ --autoscale_max_slots=NUMBER_OF_AUTOSCALING_SLOTS \ --reservation RESERVATION_NAME
Substitua o seguinte:
ADMIN_PROJECT_ID
: o ID do projetoLOCATION
: a localização da reservaNUMBER_OF_BASELINE_SLOTS
: o número de espaços base a atribuir à reservaRESERVATION_NAME
: o nome da reserva. O nome só pode conter carateres alfanuméricos em minúsculas ou traços, tem de começar por uma letra e não pode terminar com um traço. O comprimento máximo é de 64 carateres.NUMBER_OF_AUTOSCALING_SLOTS
: o número de espaços de escala automática atribuídos à reserva. Isto é igual ao valor do tamanho máximo da reserva menos o número de espaços base.
Python
Configure se as consultas usam espaços disponíveis
O sinalizador --ignore_idle_slots
controla se as consultas executadas numa reserva podem usar horários disponíveis de outras reservas. Para mais informações, consulte o artigo
Espaços inativos. Pode atualizar esta configuração numa reserva existente.
Para atualizar uma reserva, use o comando bq update
com a flag --reservation
. O exemplo seguinte define --ignore_idle_slots
como true
, o que significa que a reserva só usa espaços atribuídos à reserva.
bq update \ --project_id=ADMIN_PROJECT_ID \ --location=LOCATION \ --ignore_idle_slots=true \ --reservation RESERVATION_NAME
Substitua o seguinte:
ADMIN_PROJECT_ID
: o ID do projetoLOCATION
: a localização da reservaRESERVATION_NAME
: o nome da reserva. O nome só pode conter carateres alfanuméricos em minúsculas ou traços, tem de começar por uma letra e não pode terminar com um traço. O comprimento máximo é de 64 carateres.
Liste a configuração do espaço inativo
Para apresentar a definição de horários disponíveis para uma reserva, faça o seguinte:
SQL
Consulte a coluna ignore_idle_slots
da vista INFORMATION_SCHEMA.RESERVATIONS_BY_PROJECT
.
Na Google Cloud consola, aceda à página BigQuery.
No editor de consultas, introduza a seguinte declaração:
SELECT reservation_name, ignore_idle_slots FROM `ADMIN_PROJECT_ID.region-LOCATION`.INFORMATION_SCHEMA.RESERVATIONS_BY_PROJECT;
Substitua o seguinte:
ADMIN_PROJECT_ID
: o ID do projeto do projeto de administração que detém os recursos de reservaLOCATION
: a localização das reservas
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 --reservation
:
bq ls --reservation \ --project_id=ADMIN_PROJECT_ID \ --location=LOCATION
Substitua o seguinte:
ADMIN_PROJECT_ID
: o ID do projeto do projeto de administração que detém os recursos de reservaLOCATION
: a localização das reservas
O campo ignoreIdleSlots
contém a definição de configuração.
Elimine reservas
Quando elimina uma reserva, todas as tarefas que estão atualmente a ser executadas com horários dessa reserva falham. Para evitar erros, permita que os trabalhos em execução sejam concluídos antes de eliminar a reserva.
Autorizações necessárias
Para eliminar uma reserva, precisa da seguinte autorização de gestão de identidade e de acesso (IAM):
bigquery.reservations.delete
no projeto de administração que mantém a propriedade dos compromissos.
Cada uma das seguintes funções de IAM predefinidas inclui esta autorização:
BigQuery Admin
BigQuery Resource Admin
BigQuery Resource Editor
Para mais informações sobre as funções de IAM no BigQuery, consulte o artigo Funções e autorizações predefinidas.
Elimine uma reserva
Consola
Na Google Cloud consola, aceda à página do BigQuery.
No menu de navegação, clique em Gestão da capacidade.
Clique no separador Reservas.
Encontre a reserva que quer eliminar.
Expanda a opção
Ações.Clique em Eliminar.
Na caixa de diálogo Eliminar reserva, clique em Eliminar.
SQL
Para eliminar uma reserva, use a declaração DDL
DROP RESERVATION
.
Na Google Cloud consola, aceda à página BigQuery.
No editor de consultas, introduza a seguinte declaração:
DROP RESERVATION `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME`;
Substitua o seguinte:
ADMIN_PROJECT_ID
: o ID do projeto do projeto de administração que detém o recurso de reservaLOCATION
: a localização da reservaRESERVATION_NAME
: o ID da reserva
Clique em
Executar.
Para mais informações sobre como executar consultas, consulte o artigo Execute uma consulta interativa.
bq
Para eliminar uma reserva, use o comando bq rm
com a flag --reservation
:
bq rm \ --project_id=ADMIN_PROJECT_ID \ --location=LOCATION \ --reservation RESERVATION_NAME
Substitua o seguinte:
ADMIN_PROJECT_ID
: o ID do projeto do projeto de administração que detém o recurso de reservaLOCATION
: a localização da reservaRESERVATION_NAME
: o nome da reserva. O nome só pode conter carateres alfanuméricos em minúsculas ou traços, tem de começar por uma letra e não pode terminar com um traço. O comprimento máximo é de 64 carateres.
Python
Controle o acesso às reservas
Para pedir apoio técnico ou enviar feedback sobre esta funcionalidade, contacte bigquery-wlm-feedback@google.com.
Pode controlar que utilizadores têm acesso a reservas específicas. Para que um utilizador substitua uma reserva na respetiva consulta, tem de ter a autorização reservations.use
nessa reserva.
Autorizações necessárias
Para receber a autorização de que
precisa para especificar uma reserva em particular para a sua tarefa,
peça ao seu administrador que lhe conceda a
função de IAM Reservation Editor (roles/bigquery.reservationEditor
)
no recurso de reserva.
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Esta função predefinida contém a autorização
reservations.use
, que é necessária para
especificar uma reserva específica para o seu trabalho.
Também pode obter esta autorização com funções personalizadas ou outras funções predefinidas.
Controle o acesso a uma reserva
Para definir uma condição de gestão de identidade e de acesso (IAM) numa reserva, faça uma das seguintes ações:
Consola
Na Google Cloud consola, aceda à página IAM.
Selecione um projeto, uma pasta ou uma organização.
Selecione um principal ao qual conceder a função
bigquery.resourceEditor
:
Para conceder a função
bigquery.resourceEditor
a um principal que já tenha outras funções no recurso, encontre uma linha que contenha o principal, clique em Editar principal nessa linha e clique em Adicionar outra função.Para conceder a função
bigquery.resourceEditor
a um principal que não tenha funções existentes no recurso, clique em Conceder acesso e, de seguida, introduza um identificador para o principal, por exemplo,my-user@example.com
.
- Selecione a função
bigquery.resourceEditor
a conceder na lista pendente. - Adicione uma condição à função. Por exemplo, pode adicionar uma condição que conceda a função a todas as reservas que terminem em
/reservation1
. - Clique em Guardar. O principal recebe a função no recurso.
bq
Para conceder acesso à reserva, use o comando bq
set-iam-policy
:
bq set-iam-policy projects/project1/locations/US << EOF resource: "RESOURCE" policy { bindings { role: "roles/bigquery.resourceAdmin" members: "user:USER" condition { title: "title" expression: "EXPRESSION" } } } update_mask { paths: "bindings" } EOF
Substitua o seguinte:
RESOURCE
: o nome do recurso de reserva.USER
: o email do utilizador ao qual está a conceder a função.EXPRESSION
: a expressão na qual basear a concessão da função. Por exemplo,resource.name.endsWith(\"/res1\")
Para mais informações sobre o IAM, consulte o artigo Faça a gestão do acesso a outros recursos.