Utilizzare le prenotazioni degli slot

L'API BigQuery Reservation ti consente di acquistare slot dedicati (chiamati impegni), creare pool di slot (chiamati prenotazioni), e assegnare progetti, cartelle e organizzazioni a queste prenotazioni.

Le prenotazioni ti consentono di assegnare un numero dedicato di slot a un carico di lavoro. Ad esempio, potresti non volere un carico di lavoro di produzione per competere con i carichi di lavoro di test per gli slot. Potresti crea una prenotazione denominata prod e assegna a questo i tuoi carichi di lavoro di produzione prenotazione. Per ulteriori informazioni, vedi Prenotazioni.

Crea prenotazioni

Autorizzazioni obbligatorie

Per creare una prenotazione, è necessario quanto segue Identity and Access Management (IAM) autorizzazione:

Ciascuno dei seguenti ruoli IAM predefiniti include autorizzazione:

  • BigQuery Resource Editor
  • BigQuery Resource Admin

Per saperne di più sui ruoli IAM in BigQuery, vedi Autorizzazioni e ruoli predefiniti.

Crea una prenotazione con slot dedicati

Seleziona una delle seguenti opzioni:

Console

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nel pannello di navigazione, vai alla sezione Gestione della capacità e e poi fai clic su Crea prenotazione.

  3. Nel campo Nome prenotazione, inserisci un nome per la prenotazione.

  4. Nell'elenco a discesa Località, seleziona la località. Se selezioni un BigQuery Omni località, la tua versione è limitata alla versione Enterprise.

  5. Nell'elenco Edizione, seleziona la versione. La scalabilità automatica è disponibili all'interno di una versione. Per ulteriori informazioni, vedi Introduzione a BigQuery di Google Cloud.

  6. Nell'elenco Selettore Dimensione massima prenotazione, seleziona la dimensione massima della prenotazione.

  7. (Facoltativo) Nel campo Slot di riferimento, inserisci il numero di valori di riferimento slot machine per la prenotazione.

    Il numero di slot con scalabilità automatica disponibili è determinato sottraendo il valore degli slot di riferimento dalla prenotazione massima dimensioni. Ad esempio, se crei una prenotazione con base di 100 slot e una dimensione massima della prenotazione di 400, la prenotazione include 300 con scalabilità automatica. Per ulteriori informazioni sugli slot di riferimento, consulta Utilizzo delle prenotazioni con base di riferimento e scalabilità automatica slot machine.

  8. Per disattivare la condivisione degli slot inattivi e utilizza solo la capacità degli slot specificata, fai clic su Ignora gli slot inattivi pulsante di attivazione/disattivazione.

  9. Per espandere la sezione Impostazioni avanzate, fai clic sull'icona freccia di espansione.

  10. Facoltativo: per impostare la contemporaneità target dei job, fai clic su Override attiva la contemporaneità dei job di destinazione automatica e inserisci il valore Target Contemporaneità dei job.

  11. La suddivisione degli slot viene visualizzata nella tabella Stima dei costi. Un riepilogo della prenotazione viene visualizzato nella tabella Riepilogo della capacità.

  12. Fai clic su Salva.

La nuova prenotazione è visibile nella scheda Prenotazioni slot.

SQL

Per creare una prenotazione, utilizza CREATE RESERVATION Istruzione DDL.

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nell'editor query, inserisci la seguente istruzione:

    CREATE RESERVATION
      `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME`
    OPTIONS (
      slot_capacity = NUMBER_OF_SLOTS,
      edition = EDITION,
      autoscale_max_slots = NUMBER_OF_AUTOSCALING_SLOTS);
    

    Sostituisci quanto segue:

    • ADMIN_PROJECT_ID: l'ID progetto del progetto di amministrazione proprietario della risorsa di prenotazione
    • LOCATION: il valore località della prenotazione. Se selezioni un BigQuery Omni località, la tua versione è limitata alla versione Enterprise.
    • RESERVATION_NAME: il nome del prenotazione

      Deve iniziare e terminare con una lettera minuscola o un numero e contenere solo lettere minuscole, numeri e trattini.

    • NUMBER_OF_SLOTS: il numero di slot da allocare alla prenotazione. Il numero di slot non allocati deve essere sufficiente in l'impegno. Non puoi impostare l'opzione slot_capacity e l'opzione edition nella stessa prenotazione.
    • EDITION: la versione della prenotazione. L'assegnazione di una prenotazione a una versione comporta modifiche alle funzionalità e ai prezzi. Per saperne di più, consulta Introduzione alle versioni di BigQuery.
    • NUMBER_OF_AUTOSCALING_SLOTS: il numero di slot a scalabilità automatica assegnati alla prenotazione. Disponibile solo quando è specificata l'opzione edition.

  3. Fai clic su Esegui.

Per ulteriori informazioni su come eseguire le query, vedi Eseguire una query interattiva.

bq

Per creare una prenotazione, utilizza il comando bq mk con --reservation Segnala:

bq mk \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation \
    --slots=NUMBER_OF_SLOTS \
    --ignore_idle_slots=false \
    --edition=EDITION \
    --autoscale_max_slots=NUMBER_OF_AUTOSCALING_SLOTS \
    RESERVATION_NAME

Sostituisci quanto segue:

  • ADMIN_PROJECT_ID: ID progetto
  • LOCATION: il valore località della prenotazione. Se selezioni un BigQuery Omni località, la tua versione è limitata alla versione Enterprise.
  • NUMBER_OF_SLOTS: il numero di slot da allocare alla prenotazione

    Nell'impegno deve essere presente un numero sufficiente di slot non allocati.

  • RESERVATION_NAME: il nome della prenotazione

  • EDITION: la versione della prenotazione. L'assegnazione di una prenotazione a una versione comporta modifiche alle funzionalità e ai prezzi. Per saperne di più, consulta Introduzione alle versioni di BigQuery.

  • NUMBER_OF_AUTOSCALING_SLOTS: il numero di slot a scalabilità automatica assegnati alla prenotazione. Disponibile solo quando è specificata l'opzione edition.

Per informazioni sul flag --ignore_idle_slots, consulta Slot inattivi. Il valore predefinito è false.

Terraform

Utilizza la google_bigquery_reservation risorsa.

Per eseguire l'autenticazione in BigQuery, configura il valore predefinito dell'applicazione Credenziali. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.

Nell'esempio seguente viene creata una prenotazione denominata my-reservation:

resource "google_bigquery_reservation" "default" {
  name              = "my-reservation"
  location          = "us-central1"
  slot_capacity     = 100
  edition           = "ENTERPRISE"
  ignore_idle_slots = false # Use idle slots from other reservations
  concurrency       = 0     # Automatically adjust query concurrency based on available resources
  autoscale {
    max_slots = 200 # Allow the reservation to scale up to 300 slots (slot_capacity + max_slots) if needed
  }
}

Per applicare la configurazione Terraform a un progetto Google Cloud, completa i passaggi nella le sezioni seguenti.

Prepara Cloud Shell

  1. Avvia Cloud Shell.
  2. Imposta il progetto Google Cloud predefinito dove vuoi applicare le configurazioni Terraform.

    Devi eseguire questo comando una sola volta per progetto e puoi eseguirlo in qualsiasi directory.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Le variabili di ambiente vengono sostituite se imposti valori espliciti in Terraform di configurazione del deployment.

Prepara la directory

Ogni file di configurazione Terraform deve avere una directory (inoltre chiamato modulo principale).

  1. In Cloud Shell, crea una directory e un nuovo all'interno di quella directory. Il nome del file deve contenere .tf, ad esempio main.tf. In questo tutorial, il file è denominato main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Se stai seguendo un tutorial, puoi copiare il codice campione in ogni sezione o passaggio.

    Copia il codice campione nel nuovo oggetto main.tf.

    Facoltativamente, copia il codice da GitHub. Opzione consigliata quando lo snippet Terraform fa parte di una soluzione end-to-end.

  3. Esamina e modifica i parametri di esempio da applicare al tuo ambiente.
  4. Salva le modifiche.
  5. Inizializza Terraform. Devi eseguire questa operazione una sola volta per directory.
    terraform init

    Facoltativamente, per utilizzare la versione più recente del provider Google, includi -upgrade :

    terraform init -upgrade

Applica le modifiche

  1. Rivedi la configurazione e verifica che le risorse che Terraform creerà o che l'aggiornamento soddisfi le tue aspettative:
    terraform plan

    Apporta le correzioni necessarie alla configurazione.

  2. Applica la configurazione Terraform eseguendo questo comando e inserendo yes alla richiesta:
    terraform apply

    Attendi finché Terraform non visualizzi il messaggio "Applicazione completata!". .

  3. Apri il progetto Google Cloud per visualizzare i risultati. Nella console Google Cloud, vai alle risorse nella UI per assicurarti create o aggiornate da Terraform.

Python

Installa il pacchetto google-cloud-bigquery-reservation prima di utilizzare questo esempio di codice. Crea un ReservationServiceClient. Descrivi la prenotazione che vuoi creare con un Prenotazione. Crea la prenotazione con il metodo create_reservation.
# TODO(developer): Set project_id to the project ID containing the
# reservation.
project_id = "your-project-id"

# TODO(developer): Set location to the location of the reservation.
# See: https://cloud.google.com/bigquery/docs/locations for a list of
# available locations.
location = "US"

# TODO(developer): Set reservation_id to a unique ID of the reservation.
reservation_id = "sample-reservation"

# TODO(developer): Set slot_capicity to the number of slots in the
# reservation.
slot_capacity = 100

# TODO(developer): Choose a transport to use. Either 'grpc' or 'rest'
transport = "grpc"

# ...

from google.cloud.bigquery_reservation_v1.services import reservation_service
from google.cloud.bigquery_reservation_v1.types import (
    reservation as reservation_types,
)

reservation_client = reservation_service.ReservationServiceClient(
    transport=transport
)

parent = reservation_client.common_location_path(project_id, location)

reservation = reservation_types.Reservation(slot_capacity=slot_capacity)
reservation = reservation_client.create_reservation(
    parent=parent,
    reservation=reservation,
    reservation_id=reservation_id,
)

print(f"Created reservation: {reservation.name}")

Aggiorna prenotazioni

Puoi apportare i seguenti aggiornamenti a una prenotazione:

  • Modifica la dimensione della prenotazione aggiungendo o rimuovendo slot.
  • Configura se le query in questa prenotazione utilizzano slot inattivi.
  • Modifica la quantità di slot di riferimento o di scalabilità automatica allocate in una prenotazione.
  • Imposta la contemporaneità di destinazione dei job.

Per cambiare la versione di una prenotazione, devi prima elimina la prenotazione, quindi crea una prenotazione con la versione aggiornata.

Autorizzazioni obbligatorie

Per aggiornare una prenotazione, è necessario quanto segue Identity and Access Management (IAM) autorizzazione:

Ciascuno dei seguenti ruoli IAM predefiniti include autorizzazione:

  • BigQuery Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor

Per saperne di più sui ruoli IAM in BigQuery, vedi Autorizzazioni e ruoli predefiniti.

Modificare le dimensioni di una prenotazione

Puoi aggiungere o rimuovere slot da una prenotazione esistente.

Console

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nel pannello di navigazione, vai alla sezione Gestione della capacità.

  3. Fai clic sulla scheda Prenotazioni slot.

  4. Trova la prenotazione da aggiornare.

  5. Espandi Azioni.

  6. Fai clic su Modifica.

  7. Nella finestra di dialogo Selettore Dimensione massima prenotazione, inserisci la dimensione massima della prenotazione.

  8. Nel campo Slot di riferimento, inserisci il numero di slot di riferimento.

  9. Per espandere la sezione Impostazioni avanzate, fai clic sull'icona freccia di espansione.

  10. Facoltativo: per impostare la contemporaneità target dei job, fai clic su Override attiva la contemporaneità dei job di destinazione automatica e inserisci il valore Target Contemporaneità dei job.

  11. Fai clic su Salva.

SQL

Per modificare le dimensioni di una prenotazione, utilizza il metodo Dichiarazione DDL (Data Definition Language) di ALTER RESERVATION SET OPTIONS.

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nell'editor query, inserisci la seguente istruzione:

    ALTER RESERVATION
      `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME`
    SET OPTIONS (
      slot_capacity = NUMBER_OF_SLOTS,
      autoscale_max_slots = NUMBER_OF_AUTOSCALING_SLOTS);
    

    Sostituisci quanto segue:

    • ADMIN_PROJECT_ID: l'ID progetto del progetto di amministrazione proprietario della risorsa di prenotazione
    • LOCATION: il valore location della prenotazione, ad esempio europe-west9.
    • RESERVATION_NAME: il nome del prenotazione. Deve iniziare e terminare con una lettera minuscola o un numero e contenere solo lettere minuscole, numeri e trattini.

    • NUMBER_OF_SLOTS: il numero di slot da allocare alla prenotazione.
    • NUMBER_OF_AUTOSCALING_SLOTS: il numero di slot a scalabilità automatica assegnati alla prenotazione. Questa opzione è disponibile solo per le prenotazioni con una edition.

  3. Fai clic su Esegui.

Per ulteriori informazioni su come eseguire le query, vedi Eseguire una query interattiva.

bq

Per aggiornare le dimensioni di una prenotazione, utilizza il comando bq update con il metodo Flag --reservation:

bq update \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --slots=NUMBER_OF_SLOTS \
    --autoscale_max_slots=NUMBER_OF_AUTOSCALING_SLOTS \
    --reservation RESERVATION_NAME

Sostituisci quanto segue:

  • ADMIN_PROJECT_ID: ID progetto
  • LOCATION: il valore località della prenotazione
  • NUMBER_OF_SLOTS: il numero di slot da allocare alla prenotazione
  • RESERVATION_NAME: il nome della prenotazione
  • NUMBER_OF_AUTOSCALING_SLOTS: il numero di slot a scalabilità automatica assegnati alla prenotazione. Disponibile solo quando è specificata l'opzione edition.

Python

Installa il pacchetto google-cloud-bigquery-reservation prima di utilizzare questo esempio di codice. Crea un ReservationServiceClient. Descrivi le proprietà aggiornate con un Prenotazione e la proprietà FieldMask.paths. Aggiorna la prenotazione con il metodo update_reservation.
# TODO(developer): Set project_id to the project ID containing the
# reservation.
project_id = "your-project-id"

# TODO(developer): Set location to the location of the reservation.
# See: https://cloud.google.com/bigquery/docs/locations for a list of
# available locations.
location = "US"

# TODO(developer): Set reservation_id to a unique ID of the reservation.
reservation_id = "sample-reservation"

# TODO(developer): Set slot_capicity to the new number of slots in the
# reservation.
slot_capacity = 50

# TODO(developer): Choose a transport to use. Either 'grpc' or 'rest'
transport = "grpc"

# ...

from google.cloud.bigquery_reservation_v1.services import reservation_service
from google.cloud.bigquery_reservation_v1.types import (
    reservation as reservation_types,
)
from google.protobuf import field_mask_pb2

reservation_client = reservation_service.ReservationServiceClient(
    transport=transport
)

reservation_name = reservation_client.reservation_path(
    project_id, location, reservation_id
)
reservation = reservation_types.Reservation(
    name=reservation_name,
    slot_capacity=slot_capacity,
)
field_mask = field_mask_pb2.FieldMask(paths=["slot_capacity"])
reservation = reservation_client.update_reservation(
    reservation=reservation, update_mask=field_mask
)

print(f"Updated reservation: {reservation.name}")
print(f"\tslot_capacity: {reservation.slot_capacity}")

Configura se le query utilizzano slot inattivi

Il flag --ignore_idle_slots controlla se le query in esecuzione in una prenotazione può utilizzare slot inattivi di altre prenotazioni. Per ulteriori informazioni, vedi Slot inattivi. Puoi aggiornare configurazione su una prenotazione esistente.

Per aggiornare una prenotazione, usa il comando bq update con --reservation flag . L'esempio seguente imposta --ignore_idle_slots su true, il che significa che la prenotazione utilizzerà solo gli slot assegnati alla prenotazione.

bq update \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --ignore_idle_slots=true \
    --reservation RESERVATION_NAME

Sostituisci quanto segue:

  • ADMIN_PROJECT_ID: ID progetto
  • LOCATION: la località della prenotazione
  • RESERVATION_NAME: il nome della prenotazione

Elenca la configurazione degli slot inattivi

Per visualizzare l'impostazione relativa agli slot inattivi per una prenotazione:

SQL

Esegui una query sulla colonna ignore_idle_slots della INFORMATION_SCHEMA.RESERVATIONS_BY_PROJECT visualizzazione.

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nell'editor query, inserisci la seguente istruzione:

    SELECT
      reservation_name,
      ignore_idle_slots
    FROM
      `ADMIN_PROJECT_ID.region-LOCATION`.INFORMATION_SCHEMA.RESERVATIONS_BY_PROJECT;
    

    Sostituisci quanto segue:

  3. Fai clic su Esegui.

Per ulteriori informazioni su come eseguire le query, vedi Eseguire una query interattiva.

bq

Utilizza il comando bq ls con il flag --reservation:

bq ls --reservation \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION

Sostituisci quanto segue:

Il campo ignoreIdleSlots contiene l'impostazione di configurazione.

Elimina prenotazioni

Quando elimini una prenotazione, tutti i job attualmente in esecuzione con slot della prenotazione avrà esito negativo. Per evitare errori, consenti ai job in esecuzione completa prima di eliminare la prenotazione.

Autorizzazioni obbligatorie

Per eliminare una prenotazione, è necessario quanto segue Identity and Access Management (IAM) autorizzazione:

Ciascuno dei seguenti ruoli IAM predefiniti include autorizzazione:

  • BigQuery Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor

Per saperne di più sui ruoli IAM in BigQuery, vedi Autorizzazioni e ruoli predefiniti.

Eliminazione di una prenotazione

Console

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nel pannello di navigazione, vai alla sezione Gestione della capacità.

  3. Fai clic sulla scheda Prenotazioni.

  4. Trova la prenotazione da eliminare.

  5. Espandi Azioni.

  6. Fai clic su Elimina.

  7. Nella finestra di dialogo Elimina prenotazione, fai clic su Elimina.

SQL

Per eliminare una prenotazione, utilizza DROP RESERVATION Istruzione DDL.

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nell'editor query, inserisci la seguente istruzione:

    DROP RESERVATION
      `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME`;
    

    Sostituisci quanto segue:

    • ADMIN_PROJECT_ID: l'ID progetto del progetto di amministrazione proprietario della risorsa di prenotazione
    • LOCATION: il valore località della prenotazione
    • RESERVATION_NAME: l'ID del prenotazione

  3. Fai clic su Esegui.

Per ulteriori informazioni su come eseguire le query, vedi Eseguire una query interattiva.

bq

Per eliminare una prenotazione, utilizza il comando bq rm con --reservation Segnala:

bq rm \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation RESERVATION_NAME

Sostituisci quanto segue:

  • ADMIN_PROJECT_ID: l'ID progetto del progetto di amministrazione proprietario della risorsa di prenotazione
  • LOCATION: il valore località della prenotazione
  • RESERVATION_NAME: il nome della prenotazione

Python

Installa il pacchetto google-cloud-bigquery-reservation prima di utilizzare questo esempio di codice. Crea un ReservationServiceClient. Elimina la prenotazione con il metodo delete_reservation.
# TODO(developer): Set project_id to the project ID containing the
# reservation.
project_id = "your-project-id"

# TODO(developer): Set location to the location of the reservation.
# See: https://cloud.google.com/bigquery/docs/locations for a list of
# available locations.
location = "US"

# TODO(developer): Set reservation_id to a unique ID of the reservation.
reservation_id = "sample-reservation"

# TODO(developer): Choose a transport to use. Either 'grpc' or 'rest'
transport = "grpc"

# ...

from google.cloud.bigquery_reservation_v1.services import reservation_service

reservation_client = reservation_service.ReservationServiceClient(
    transport=transport
)
reservation_name = reservation_client.reservation_path(
    project_id, location, reservation_id
)
reservation_client.delete_reservation(name=reservation_name)

print(f"Deleted reservation: {reservation_name}")