Mit Slot-Reservierungen arbeiten

Mit der BigQuery Reservations API können Sie dedizierte Slots (Zusicherungen) erwerben, Slot-Pools erstellen (Reservierungen) und diesen Reservierungen Projekte und Organisationen zuweisen. Weitere Informationen zu diesen Konzepten finden Sie unter Einführung in Reservierungen. Informationen zu den Zusicherungsplänen von BigQuery finden Sie unter Kapazitätszusicherungen.

Mit Reservierungen können Sie einer Arbeitslast eine bestimmte Anzahl an Slots zuweisen. Beispielsweise kann es sein, dass eine Produktionsarbeitslast nicht mit Testarbeitslasten für Slots konkurrieren soll. Sie können eine Reservierung mit dem Namen prod erstellen und Ihre Produktionsarbeitslasten dieser Reservierung zuweisen. Weitere Informationen finden Sie unter Reservierungen.

Reservierungen erstellen

Erforderliche Berechtigungen

Zum Erstellen einer Reservierung benötigen Sie die folgende IAM-Berechtigung (Identity and Access Management):

  • bigquery.reservations.create für das Verwaltungsprojekt, das die Eigentumsrechte für die Zusicherungen verwaltet.

Jede der folgenden vordefinierten IAM-Rollen enthält diese Berechtigung:

  • BigQuery Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor

Weitere Informationen zu IAM-Rollen in BigQuery finden Sie unter Vordefinierte Rollen und Berechtigungen.

Reservierung mit dedizierten Slots erstellen

Wählen Sie eine der folgenden Optionen aus:

Console

  1. Rufen Sie in der Google Cloud Console die Seite „BigQuery“ auf.

    BigQuery aufrufen

  2. Gehen Sie im Navigationsbereich zum Abschnitt Kapazitätsverwaltung.

  3. Klicken Sie auf Reservierung erstellen.

  4. Geben Sie im Feld Name der Reservierung einen Namen für die Reservierung ein.

  5. Wählen Sie in der Drop-down-Liste Standort den Standort aus. Wenn Sie einen BigQuery Omni-Standort auswählen, ist Ihre Versionsoption auf die Enterprise-Version beschränkt.

  6. Wählen Sie im Abschnitt Kapazitätsmodell das Kapazitätsmodell aus.

  7. Wenn Sie die Option Pauschalpreis auswählen, geben Sie unter Baseline-Slots die Anzahl der Slots für die Reservierung ein.

  8. Wenn Sie die Option Autoscaling auswählen:

    1. Wählen Sie in der Liste Edition die Ausgabe aus. Autoscaling ist nur innerhalb einer Version verfügbar. Weitere Informationen finden Sie unter Einführung in BigQuery-Editing
    2. Wählen Sie in der Liste Maximale Reservierungsgröße die maximale Reservierungsgröße aus.
    3. Optional: Geben Sie im Feld Referenz-Slots die Anzahl der Referenz-Slots für die Reservierung ein. Wenn Sie nur die angegebene Slotkapazität verwenden möchten, klicken Sie auf die Schaltfläche Inaktive Slots ignorieren.

      Die Anzahl der verfügbaren Autoscaling-Slots wird bestimmt, indem der Wert für Referenz-Slots vom Wert für Maximale Reservierung abgezogen wird. Wenn Sie beispielsweise eine Reservierung mit 100 Referenz-Slots und einer maximalen Reservierungsgröße von 400 erstellen, hat Ihre Reservierung 300 Autoscaling-Slots. Weitere Informationen zu Referenz-Slots finden Sie unter Reservierungen mit Slots für Referenz und Autoscaling verwenden.

  9. Zum DeaktivierenFreigabe inaktiver Slots klicken Sie aufInaktive Slots ignorieren umschalten.

  10. Die Aufschlüsselung der Slots wird in der Tabelle Kostenschätzung angezeigt. In der Tabelle Kapazitätsübersicht wird eine Zusammenfassung der Reservierung angezeigt.

  11. Klicken Sie auf Speichern.

Die neue Reservierung ist auf dem Tab Reservierungen zu sehen.

SQL

Verwenden Sie zum Erstellen einer Reservierung die DDL-Anweisung CREATE RESERVATION.

  1. Öffnen Sie in der Google Cloud Console die Seite BigQuery.

    BigQuery aufrufen

  2. Geben Sie im Abfrageeditor die folgende Anweisung ein:

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

    Dabei gilt:

    • ADMIN_PROJECT_ID: die Projekt-ID des Administrationsprojekts, dem die Reservierungsressource gehört
    • LOCATION: Der Standort der Reservierung. Wenn Sie einen BigQuery Omni-Standort auswählen, ist Ihre Versionsoption auf die Enterprise-Version beschränkt.
    • RESERVATION_NAME: der Name der Reservierung

      Er muss mit einem Kleinbuchstaben oder einer Zahl beginnen und enden. Er darf nur Kleinbuchstaben, Ziffern und Bindestriche enthalten.

    • NUMBER_OF_SLOTS: die Anzahl der Slots, die der Reservierung zugewiesen werden sollen. Die Zusicherung muss genügend nicht zugewiesene Slots aufweisen. Sie können die Optionen slot_capacity und edition nicht in derselben Reservierung festlegen.
    • EDITION: die Version der Reservierung. Wenn Sie einer Ausgabe eine Reservierung zuweisen, ändern sich die Funktion und die Preise. Weitere Informationen finden Sie unter Einführung in BigQuery-Versionen.
    • NUMBER_OF_AUTOSCALING_SLOTS: die Anzahl der Autoscaling-Slots, die der Reservierung zugewiesen sind Nur verfügbar, wenn die Option edition angegeben ist.

  3. Klicken Sie auf Ausführen.

Informationen zum Ausführen von Abfragen finden Sie unter Interaktive Abfragen ausführen.

bq

Verwenden Sie zum Erstellen einer Reservierung den Befehl bq mk mit dem Flag --reservation:

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

Dabei gilt:

  • ADMIN_PROJECT_ID: die Projekt-ID
  • LOCATION: Der Standort der Reservierung. Wenn Sie einen BigQuery Omni-Standort auswählen, ist Ihre Versionsoption auf die Enterprise-Version beschränkt.
  • NUMBER_OF_SLOTS: die Anzahl der Slots, die dieser Reservierung zugewiesen werden sollen

    Die Zusicherung muss genügend nicht zugewiesene Slots aufweisen.

  • RESERVATION_NAME: der Name der Reservierung

  • EDITION: die Version der Reservierung. Wenn Sie einer Ausgabe eine Reservierung zuweisen, ändern sich die Funktion und die Preise. Weitere Informationen finden Sie unter Einführung in BigQuery-Versionen.

  • NUMBER_OF_AUTOSCALING_SLOTS: die Anzahl der Autoscaling-Slots, die der Reservierung zugewiesen sind Nur verfügbar, wenn die Option edition angegeben ist.

Weitere Informationen zum Flag --ignore_idle_slots finden Sie unter Inaktive Slots. Der Standardwert ist false.

Python

Installieren Sie das google-cloud-bigquery-reservation-Paket, bevor Sie dieses Codebeispiel verwenden. Erstellen Sie einen ReservationServiceClient. Beschreiben Sie die Reservierung, die Sie mit einer Reservation erstellen möchten. Erstellen Sie die Reservierung mit der Methode 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}")

Reservierungen aktualisieren

Sie können die folgenden Änderungen an einer Reservierung vornehmen:

  • Ändern Sie die Reservierungsgröße, indem Sie Slots hinzufügen oder entfernen.
  • Konfigurieren Sie, ob Abfragen in dieser Reservierung inaktive Slots verwenden.
  • Ändern Sie die Anzahl der Baseline- oder Autoscaling-Slots, die einer Reservierung zugewiesen sind.
  • Führen Sie ein Upgrade auf eine höhere Version durch. Sie können kein Downgrade einer vorhandenen Reservierung auf eine niedrigere Version ausführen.

Erforderliche Berechtigungen

Zum Aktualisieren einer Reservierung benötigen Sie die folgende IAM-Berechtigung (Identity and Access Management):

  • bigquery.reservations.update für das Verwaltungsprojekt, das die Eigentumsrechte für die Zusicherungen verwaltet.

Jede der folgenden vordefinierten IAM-Rollen enthält diese Berechtigung:

  • BigQuery Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor

Weitere Informationen zu IAM-Rollen in BigQuery finden Sie unter Vordefinierte Rollen und Berechtigungen.

Größe einer Reservierung ändern

Sie können Slots einer vorhandenen Reservierung hinzufügen oder aus ihr entfernen.

Console

  1. Rufen Sie in der Google Cloud Console die Seite „BigQuery“ auf.

    BigQuery aufrufen

  2. Gehen Sie im Navigationsbereich zum Abschnitt Kapazitätsverwaltung.

  3. Klicken Sie auf den Tab Reservierungen.

  4. Suchen Sie die Reservierung, die Sie aktualisieren möchten.

  5. Maximieren Sie die Option Aktionen.

  6. Klicken Sie auf Bearbeiten.

  7. Geben Sie im Dialogfeld Maximale Reservierungsgröße auswählen die maximale Reservierungsgröße ein.

  8. Geben Sie im Feld Referenz-Slots die Anzahl der Referenz-Slots ein.

  9. Klicken Sie auf Speichern.

SQL

Verwenden Sie die DDL-Anweisung ALTER RESERVATION SET OPTIONS, um die Größe einer Reservierung zu ändern.

  1. Öffnen Sie in der Google Cloud Console die Seite BigQuery.

    BigQuery aufrufen

  2. Geben Sie im Abfrageeditor die folgende Anweisung ein:

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

    Dabei gilt:

    • ADMIN_PROJECT_ID: die Projekt-ID des Administrationsprojekts, dem die Reservierungsressource gehört
    • LOCATION: der Standort der Reservierung, z. B. europe-west9.
    • RESERVATION_NAME: der Name der Reservierung Er muss mit einem Kleinbuchstaben oder einer Zahl beginnen und enden. Er darf nur Kleinbuchstaben, Ziffern und Bindestriche enthalten.

    • NUMBER_OF_SLOTS: die Anzahl der Slots, die der Reservierung zugewiesen werden sollen.
    • NUMBER_OF_AUTOSCALING_SLOTS: die Anzahl der Autoscaling-Slots, die der Reservierung zugewiesen sind Diese Option ist nur für Reservierungen mit einem edition verfügbar.

  3. Klicken Sie auf Ausführen.

Informationen zum Ausführen von Abfragen finden Sie unter Interaktive Abfragen ausführen.

bq

Verwenden Sie den Befehl bq update mit dem Flag --reservation, um die Größe einer Reservierung zu aktualisieren:

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

Dabei gilt:

  • ADMIN_PROJECT_ID: die Projekt-ID
  • LOCATION: der Standort der Reservierung
  • NUMBER_OF_SLOTS: die Anzahl der Slots, die dieser Reservierung zugewiesen werden sollen
  • RESERVATION_NAME: der Name der Reservierung
  • NUMBER_OF_AUTOSCALING_SLOTS: die Anzahl der Autoscaling-Slots, die der Reservierung zugewiesen sind Nur verfügbar, wenn die Option edition angegeben ist.

Python

Installieren Sie das google-cloud-bigquery-reservation-Paket, bevor Sie dieses Codebeispiel verwenden. Erstellen Sie einen ReservationServiceClient. Beschreiben Sie die aktualisierten Attribute mit einer Reservierung und dem Attribut FieldMask.paths. Aktualisieren Sie die Reservierung mit der Methode 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}")

Konfigurieren, ob Abfragen inaktive Slots verwenden

Mit dem Flag --ignore_idle_slots wird gesteuert, ob Abfragen, die in einer Reservierung ausgeführt werden, inaktive Slots aus anderen Reservierungen verwenden können. Weitere Informationen finden Sie unter Inaktive Slots. Sie können diese Konfiguration für eine vorhandene Reservierung aktualisieren.

Verwenden Sie zum Aktualisieren einer Reservierung den Befehl bq update mit dem Flag --reservation. Im folgenden Beispiel wird für --ignore_idle_slots der Wert true festgelegt. Dies bedeutet, dass die Reservierung nur Slots nutzt, die der Reservierung zugewiesen sind.

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

Dabei gilt:

  • ADMIN_PROJECT_ID: die Projekt-ID
  • LOCATION: der Standort der Reservierung
  • RESERVATION_NAME: der Name der Reservierung

Inaktive Slot-Konfiguration auflisten

So listen Sie die Einstellung inaktive Slots für eine Reservierung auf:

SQL

Fragen Sie die Spalte ignore_idle_slots der Ansicht INFORMATION_SCHEMA.RESERVATIONS_BY_PROJECT ab.

  1. Öffnen Sie in der Google Cloud Console die Seite BigQuery.

    BigQuery aufrufen

  2. Geben Sie im Abfrageeditor die folgende Anweisung ein:

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

    Dabei gilt:

  3. Klicken Sie auf Ausführen.

Informationen zum Ausführen von Abfragen finden Sie unter Interaktive Abfragen ausführen.

bq

Führen Sie den Befehl bq ls mit dem Flag --reservation aus:

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

Dabei gilt:

Das Feld ignoreIdleSlots enthält die Konfigurationseinstellung.

Reservierungen löschen

Wenn Sie eine Reservierung löschen, schlagen alle Jobs fehl, die derzeit mit Slots dieser Reservierung ausgeführt werden. Sie können Fehler vermeiden, indem Sie festlegen, dass laufende Jobs vor dem Löschen der Reservierung abgeschlossen werden.

Erforderliche Berechtigungen

Zum Löschen einer Reservierung benötigen Sie die folgende IAM-Berechtigung (Identity and Access Management):

  • bigquery.reservations.delete für das Verwaltungsprojekt, das die Eigentumsrechte für die Zusicherungen verwaltet.

Jede der folgenden vordefinierten IAM-Rollen enthält diese Berechtigung:

  • BigQuery Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor

Weitere Informationen zu IAM-Rollen in BigQuery finden Sie unter Vordefinierte Rollen und Berechtigungen.

Eine Reservierung löschen

Console

  1. Rufen Sie in der Google Cloud Console die Seite „BigQuery“ auf.

    BigQuery aufrufen

  2. Gehen Sie im Navigationsbereich zum Abschnitt Kapazitätsverwaltung.

  3. Klicken Sie auf den Tab Reservierungen.

  4. Suchen Sie die Reservierung, die Sie löschen möchten.

  5. Maximieren Sie die Option Aktionen.

  6. Klicken Sie auf Löschen.

  7. Klicken Sie im Dialogfeld Reservierung löschen auf Löschen.

SQL

Verwenden Sie die DDL-Anweisung DROP RESERVATION, um eine Reservierung zu löschen.

  1. Öffnen Sie in der Google Cloud Console die Seite BigQuery.

    BigQuery aufrufen

  2. Geben Sie im Abfrageeditor die folgende Anweisung ein:

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

    Dabei gilt:

    • ADMIN_PROJECT_ID: die Projekt-ID des Administrationsprojekts, dem die Reservierungsressource gehört
    • LOCATION: der Standort der Reservierung
    • RESERVATION_NAME: die ID der Reservierung

  3. Klicken Sie auf Ausführen.

Informationen zum Ausführen von Abfragen finden Sie unter Interaktive Abfragen ausführen.

bq

Verwenden Sie zum Löschen einer Reservierung den Befehl bq rm mit dem Flag --reservation:

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

Dabei gilt:

  • ADMIN_PROJECT_ID: die Projekt-ID des Administrationsprojekts, dem die Reservierungsressource gehört
  • LOCATION: der Standort der Reservierung
  • RESERVATION_NAME: der Name der Reservierung

Python

Installieren Sie das google-cloud-bigquery-reservation-Paket, bevor Sie dieses Codebeispiel verwenden. Erstellen Sie einen ReservationServiceClient. Löschen Sie die Reservierung mit der Methode 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}")

BigQuery Reservation API zu VPC Service Controls hinzufügen

Die BigQuery Reservation API unterstützt VPC Service Controls. Für die Integration der BigQuery Reservation API in VPC Service Controls folgen Sie der Anleitung unter Dienstperimeter erstellen und fügen die BigQuery Reservation API den geschützten Diensten hinzu.

Ein Dienstperimeter schützt den Zugriff auf Reservierungen, Zusicherungen und Zuweisungen in den im Perimeter angegebenen Administrationsprojekten. Wenn Sie eine Zuweisung erstellen, schützt VPC Service Controls das Administrationsprojekt und zugewiesene Projekte, Ordner und Organisationen.