Gestire gli impegni di workload

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.

Un impegno di capacità è un acquisto di capacità di calcolo BigQuery per un periodo di tempo minimo. L'acquisto di un impegno di capacità è facoltativo quando crei una prenotazione con una versione, ma può offrire risparmi sui costi.

Gli impegni sono una risorsa di regione. Gli impegni acquistati in una regione o in una multiregione non possono essere utilizzati in altre regioni o in altre multiregioni. Gli impegni non possono essere spostati tra regioni o tra regioni e multiregioni. Gli impegni non possono essere spostati tra i progetti.

Abilita l'API Reservations

L'API BigQuery Reservation è distinta dall'API BigQuery esistente e deve essere abilitata in modo indipendente. Per saperne di più, consulta Abilitazione e disabilitazione delle API.

  • Il nome dell'API è "API BigQuery Reservation"
  • L'endpoint per l'API BigQuery Reservation è bigqueryreservation.googleapis.com.

Abilita l'API.

Impegni di acquisto

Per riservare capacità per un periodo di tempo minimo, puoi acquistare un impegno di capacità. In questo modo si ottiene uno sconto e si risparmiano costi. Per saperne di più sui costi specifici, consulta la pagina Prezzi di BigQuery.

Autorizzazioni obbligatorie

Per creare un impegno di capacità, devi disporre della seguente autorizzazione Identity and Access Management (IAM):

Ciascuno dei seguenti ruoli IAM predefiniti include questa autorizzazione:

  • BigQuery Admin
  • BigQuery Resource Admin

Per saperne di più sui ruoli IAM in BigQuery, consulta Ruoli predefiniti e autorizzazioni.

Crea un impegno di capacità

Gli impegni sono una risorsa di regione. Gli impegni acquistati in una regione o in una multiregione non possono essere utilizzati in altre regioni o in altre multiregioni. Gli impegni non possono essere spostati tra regioni o tra regioni e multi-regioni. Gli impegni non possono essere spostati da un progetto all'altro.

Console

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

    Vai a BigQuery

  2. Nel menu di navigazione, fai clic su Workload Management.

  3. Fai clic su Crea impegno.

  4. In Configura:

    1. Seleziona la posizione.
    2. Nella sezione Modello di capacità, seleziona il modello di capacità.
    3. Se selezioni l'opzione Scalabilità automatica (versione):
      1. Nell'elenco Versione, seleziona la versione. Gli impegni di capacità sono supportati solo nelle versioni Enterprise ed Enterprise Plus.
    4. Seleziona la Durata dell'impegno, che specifica il tuo piano di impegno.
    5. Se stai acquistando un impegno annuale, seleziona il piano di rinnovo che vuoi che entri in vigore alla scadenza dell'impegno:

      1. Rinnovo annuale. Alla scadenza, l'impegno annuale viene rinnovato per un altro anno come impegno annuale.

      Per ulteriori informazioni, consulta Impegni slot.

    6. Inserisci il Numero di slot che vuoi acquistare.

    7. Fai clic su Avanti.

  5. Esamina la stima del costo per il tuo acquisto.

  6. Nella sezione Conferma e invia:

    1. Digita CONFIRM per confermare l'acquisto.
    2. Fai clic su Acquista per acquistare gli slot.
  7. Per visualizzare l'impegno, fai clic su Visualizza impegni slot. Dopo aver eseguito il provisioning della capacità, l'impegno di capacità richiesto ha uno stato verde.

La prima volta che acquisti capacità, viene creata una prenotazione default.

SQL

Per creare un impegno di capacità, utilizza l'istruzione DDL CREATE CAPACITY.

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

    Vai a BigQuery

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

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

    Sostituisci quanto segue:

    • ADMIN_PROJECT_ID: l'ID progetto del progetto di amministrazione che manterrà la proprietà di questo impegno
    • LOCATION: la località dell'impegno
    • COMMITMENT_ID: l'ID dell'impegno

      Deve essere univoco per il progetto e la località. 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 acquistare
    • EDITION: la versione associata all'impegno di capacità. Puoi creare un impegno di capacità solo con le versioni Enterprise o Enterprise Plus. Per scoprire di più sulle versioni, consulta Introduzione alle versioni di BigQuery.
    • PLAN_TYPE: il tipo di piano. Le opzioni sono ANNUAL o THREE_YEAR.
    • RENEWAL_PLAN_TYPE: il tipo di piano di rinnovo. Le opzioni sono NONE, ANNUAL o THREE_YEAR.

  3. Fai clic su Esegui.

Per saperne di più su come eseguire le query, consulta Esegui una query interattiva.

bq

Utilizza il comando bq mk con il flag --capacity_commitment per acquistare slot.

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

Sostituisci quanto segue:

  • ADMIN_PROJECT_ID: l'ID progetto del progetto di amministrazione che manterrà la proprietà di questo impegno
  • LOCATION: la posizione dell'impegno
  • EDITION: la versione associata all'impegno di capacità. Puoi creare un impegno di capacità solo con le versioni Enterprise o Enterprise Plus. Per scoprire di più sulle versioni, consulta Introduzione alle versioni di BigQuery.
  • PLAN_TYPE: il tipo di piano. Le opzioni sono ANNUAL o THREE_YEAR.
  • RENEWAL_PLAN_TYPE: il tipo di piano di rinnovo. Le opzioni sono NONE, ANNUAL o THREE_YEAR.
  • NUMBER_OF_SLOTS: il numero di slot da acquistare.

Visualizza gli impegni di capacità

Le sezioni seguenti descrivono come visualizzare gli impegni di capacità esistenti.

Autorizzazioni obbligatorie

Per visualizzare gli impegni, devi disporre della seguente autorizzazione Identity and Access Management (IAM):

Ognuno dei seguenti ruoli IAM predefiniti include questa autorizzazione:

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

Per saperne di più sui ruoli IAM in BigQuery, consulta Ruoli predefiniti e autorizzazioni.

Visualizza gli impegni di capacità per progetto

Per visualizzare gli impegni di capacità per progetto:

Console

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

    Vai a BigQuery

  2. Nel menu di navigazione, fai clic su Workload Management.

  3. Fai clic sulla scheda Impegni slot. I tuoi impegni di capacità sono elencati nella tabella in Impegni.

SQL

Per visualizzare gli impegni per un progetto di amministrazione, esegui una query sulla vista INFORMATION_SCHEMA.CAPACITY_COMMITMENTS_BY_PROJECT.

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

    Vai a BigQuery

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

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

    Sostituisci quanto segue:

  3. Fai clic su Esegui.

Per saperne di più su come eseguire le query, consulta Eseguire una query interattiva.

bq

Utilizza il comando bq ls con il flag --capacity_commitment per elencare gli impegni per un progetto di amministrazione.

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

Sostituisci quanto segue:

Aggiornamento impegni relativi alla capacità

Puoi apportare i seguenti aggiornamenti a un impegno di capacità:

  • Aggiorna il piano di rinnovo dell'impegno
  • Convertire un impegno in un piano di impegno con una durata più lunga.
  • Suddividi un impegno in due impegni.
  • Unisci due impegni in un unico impegno.

Autorizzazioni obbligatorie

Per aggiornare gli impegni di capacità, devi disporre della seguente autorizzazione Identity and Access Management (IAM):

Ognuno dei seguenti ruoli IAM predefiniti include questa autorizzazione:

  • BigQuery Admin
  • BigQuery Resource Admin

Per saperne di più sui ruoli IAM in BigQuery, consulta Ruoli predefiniti e autorizzazioni.

Rinnova un impegno

Gli impegni annuali hanno un piano di rinnovo, che specifichi quando crei o converti un impegno annuale. Puoi modificare il piano di rinnovo dell'impegno annuale in qualsiasi momento prima della data di fine dell'impegno.

Console

Puoi modificare il piano di rinnovo per un impegno annuale come segue:

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

    Vai a BigQuery

  2. Nel menu di navigazione, fai clic su Workload Management.

  3. Fai clic sulla scheda Impegni slot.

  4. Trova l'impegno che vuoi modificare.

  5. Fai clic su Azioni e poi seleziona l'opzione Modifica piano di rinnovo.

  6. Seleziona il nuovo piano di rinnovo.

bq

Per modificare la scelta del piano di rinnovo per un impegno annuale, utilizza il comando bq update con il flag --capacity_commitment e il flag --renewal_plan.

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

Sostituisci quanto segue:

Converti un impegno in una durata più lunga

Puoi scegliere di convertire il tuo impegno in un tipo di impegno di durata maggiore in qualsiasi momento. Questa operazione funziona anche se vuoi eseguire la conversione da un piano legacy a un'edizione.

Non appena aggiorni l'impegno, ti viene addebitata la tariffa associata al nuovo piano e la data di fine viene reimpostata.

Per convertire un impegno, utilizza il comando bq update con il flag --plan.

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

Sostituisci quanto segue:

Suddividi un impegno

Puoi suddividere l'impegno in due impegni. Questa opzione può essere utile se vuoi rinnovare parte di un impegno. Ad esempio, se hai un impegno annuale di 1000 slot, puoi suddividere 300 slot in un nuovo impegno, lasciando 700 slot nell'impegno originale. Potresti quindi rinnovare 700 slot alla tariffa annuale e convertire 300 slot in un impegno di tre anni. Puoi suddividere un impegno in incrementi di 50 slot.

Quando dividi un impegno, il nuovo impegno ha lo stesso piano e la stessa data di fine dell'impegno originale.

Console

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

    Vai a BigQuery

  2. Nel menu di navigazione, fai clic su Workload Management.

  3. Fai clic sulla scheda Impegni slot.

  4. Seleziona l'impegno che vuoi dividere.

  5. Fai clic su Dividi.

  6. Nella pagina Suddividi impegno, utilizza il cursore Configura suddivisione per selezionare il numero di slot da inserire in ogni suddivisione, con incrementi di 50 slot.

  7. Fai clic su Suddividi per suddividere l'impegno. Il nuovo impegno è elencato nella scheda Impegni di slot.

bq

Per dividere gli impegni, utilizza il comando bq update.

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

Sostituisci quanto segue:

  • ADMIN_PROJECT_ID: l'ID progetto
  • LOCATION: la località dell'impegno
  • SLOTS_TO_SPLIT: il numero di slot da suddividere dall'impegno originale in un nuovo impegno
  • COMMITMENT_ID: l'ID dell'impegno

    Per ottenere l'ID, consulta Visualizzare gli impegni acquistati.

Unisci due impegni

Puoi unire più impegni in un unico impegno. Gli impegni da unire devono essere tutti dello stesso tipo (ANNUAL o THREE_YEAR). La data di fine dell'impegno combinato è la data di fine massima degli impegni originali. Se uno degli impegni ha una data di fine precedente, viene esteso alla data successiva e ti viene addebitato un importo proporzionale per questi slot.

Console

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

    Vai a BigQuery

  2. Nel menu di navigazione, fai clic su Workload Management.

  3. Fai clic sulla scheda Impegni slot.

  4. Seleziona gli impegni che vuoi unire.

  5. Fai clic su Unisci.

  6. Nella pagina Unisci impegni, esamina i dettagli dell'unione e fai clic su Unisci. Il nuovo impegno unito è elencato nella scheda Impegni di slot.

bq

Per unire due impegni in uno, utilizza il comando bq update:

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

Sostituisci quanto segue:

  • ADMIN_PROJECT_ID: l'ID progetto
  • LOCATION: la località degli impegni
  • COMMITMENT1: il primo impegno da unire
  • COMMITMENT2: il secondo impegno da unire

Esegui l'upgrade degli impegni a una nuova versione

Non puoi eseguire l'upgrade diretto di un impegno a una nuova versione. Ad esempio, non puoi eseguire l'upgrade di un impegno dalla versione Enterprise alla versione Enterprise Plus. Segui invece questi passaggi per eseguire l'upgrade di un impegno:

  1. Crea un nuovo impegno. Scegli la versione di upgrade appropriata. Tieni presente che questo nuovo impegno ha una data di fine impegno diversa rispetto a quello esistente.

  2. Contatta l'assistenza per richiedere l'annullamento del tuo impegno esistente.

Scadenza dell'impegno

Gli impegni scadono al termine della loro durata. Non puoi eliminare un impegno mentre è ancora attivo. Se il piano di rinnovo è impostato su NONE, l'impegno viene eliminato automaticamente. In caso contrario, viene rinnovato con un impegno annuale o triennale, a seconda del piano di rinnovo. Per modificare il piano di rinnovo in NONE, segui i passaggi descritti in Rinnova un impegno.

Dopo aver rinnovato un impegno, il valore di Ora di inizio non cambia. Si riferisce all'ora di inizio dell'impegno originale. Il valore di Ora di fine è l'ora di scadenza dell'impegno rinnovato. Ad esempio, se hai un impegno annuale creato il 13 dicembre 2022 e rinnovato il 13 dicembre 2023. Se visualizzi i dettagli dell'impegno il 14 dicembre 2023, il valore di Ora di inizio sarà 13 dicembre 2022 e il valore di Ora di fine sarà 12 dicembre 2024.

Gli slot di riferimento vengono sempre addebitati. Se un impegno di capacità scade, potresti dover modificare manualmente il numero di slot di base nelle prenotazioni per evitare addebiti indesiderati. Ad esempio, supponiamo di avere un impegno di 1 anno con 100 slot e una prenotazione con 100 slot di base. L'impegno scade e non è previsto un piano di rinnovo. Una volta scaduto l'impegno, paghi per 100 slot di base secondo la tariffa con pagamento a consumo.

Controlla la creazione degli impegni di capacità

Puoi utilizzare le policy di negazione IAM per un maggiore controllo su chi può creare impegni di capacità.

Le policy di negazione possono essere create per un insieme di utenti o per tutti e possono essere configurate con eccezioni e condizioni.

Ad esempio, la seguente policy nega a tutti gli utenti l'autorizzazione a creare impegni di capacità, ad eccezione del principal "lucian@example.com":

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

Questa policy può essere collegata a un'organizzazione per controllare chi può creare gli impegni.

Tieni presente che queste policy hanno la precedenza sui ruoli IAM, quindi anche un utente con il ruolo bigquery.admin non potrebbe creare un impegno a meno che la policy non venga eliminata o modificata.

Per saperne di più, consulta Nega l'accesso alle risorse.

Risolvi i problemi relativi agli impegni di capacità

Questa sezione descrive i passaggi per la risoluzione dei problemi che potrebbero esserti utili in caso di problemi con gli impegni di capacità BigQuery.

Gli slot acquistati sono in attesa

Gli slot sono soggetti alla capacità disponibile. Quando acquisti impegni di slot e BigQuery li alloca, la colonna Stato mostra un segno di spunta. Se BigQuery non riesce ad allocare subito gli slot richiesti, la colonna Stato rimane in attesa. Potresti dover attendere diverse ore prima che gli slot diventino disponibili. Se hai bisogno di accedere agli slot prima, prova a seguire questi passaggi:

  1. Elimina l'impegno in attesa.
  2. Acquista un nuovo impegno per un numero inferiore di slot. A seconda della capacità, l'impegno più piccolo potrebbe diventare attivo immediatamente.
  3. Acquista gli slot rimanenti come impegno separato. Questi slot potrebbero essere visualizzati come in attesa nella colonna Stato, ma in genere diventano attivi entro poche ore.
  4. (Facoltativo) Quando entrambi gli impegni diventano attivi, uniscili in un unico impegno, a condizione che entrambi si trovino nella stessa regione e nella stessa versione e abbiano lo stesso piano di impegno.

Se un impegno di slot non va a buon fine o richiede molto tempo per essere completato, valuta la possibilità di utilizzare temporaneamente i prezzi on demand. Con questa soluzione, puoi eseguire query critiche in un progetto diverso non assegnato ad alcuna prenotazione, assegnare il progetto a None o rimuovere del tutto l'assegnazione del progetto.