Mit Slot-Reservierungen arbeiten
Mit der BigQuery Reservations API können Sie dedizierte Slots (sogenannte Zusicherungen) kaufen und Slot-Pools erstellen (sogenannte Reservierungen und diesen Reservierungen Projekte, Ordner und Organisationen zuweisen.
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 Resource Editor
BigQuery Resource Admin
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
Rufen Sie in der Google Cloud Console die Seite „BigQuery“ auf.
Wechseln Sie im Navigationsbereich zum Abschnitt Kapazitätsverwaltung und klicken Sie dann auf Reservierung erstellen.
Geben Sie im Feld Name der Reservierung einen Namen für die Reservierung ein.
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.
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
Wählen Sie in der Liste Maximale Reservierungsgröße die maximale Reservierungsgröße aus.
Optional: Geben Sie im Feld Referenz-Slots die Anzahl der Referenz-Slots für die Reservierung ein.
Die Anzahl der verfügbaren Autoscaling-Slots wird bestimmt, indem der Wert für Referenz-Slots von Maximale Reservierungsgröße 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.
Wenn Sie die Freigabe inaktiver Slots deaktivieren und nur die angegebene Slotkapazität verwenden möchten, klicken Sie auf die Schaltfläche Inaktive Slots ignorieren.
Klicken Sie zum Erweitern des Abschnitts Erweiterte Einstellungen auf den
Erweiterungspfeil.Optional: Um die Zielnebenläufigkeit von Jobs festzulegen, klicken und aktivieren Sie die Schaltfläche Automatische Zielnebenläufigkeit von Jobs überschreiben und geben Sie die Zielnebenläufigkeit von Jobs ein.
Die Aufschlüsselung der Slots wird in der Tabelle Kostenschätzung angezeigt. In der Tabelle Kapazitätsübersicht wird eine Zusammenfassung der Reservierung angezeigt.
Klicken Sie auf Speichern.
Die neue Reservierung ist auf dem Tab Slot-Reservierungen zu sehen.
SQL
Verwenden Sie zum Erstellen einer Reservierung die DDL-Anweisung CREATE RESERVATION
.
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Geben Sie im Abfrageeditor die folgende Anweisung ein:
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);
Ersetzen Sie Folgendes:
ADMIN_PROJECT_ID
: die Projekt-ID des Administrationsprojekts, dem die Reservierungsressource gehörtLOCATION
: 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 ReservierungEr muss mit einem Kleinbuchstaben oder einer Zahl beginnen und enden. Er darf nur Kleinbuchstaben, Ziffern und Bindestriche enthalten.
NUMBER_OF_BASELINE_SLOTS
: die Anzahl der Basisslots, die dieser Reservierung zugewiesen werden sollen Sie können die Optionenslot_capacity
undedition
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-Editing.NUMBER_OF_AUTOSCALING_SLOTS
: die Anzahl der Autoscaling-Slots, die der Reservierung zugewiesen sind. Dies entspricht dem Wert der maximalen Reservierungsgröße abzüglich der Anzahl der Referenz-Slots.
Klicken Sie auf
Ausführen.
Informationen zum Ausführen von Abfragen finden Sie unter Interaktive Abfrage 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_BASELINE_SLOTS \ --ignore_idle_slots=false \ --edition=EDITION \ --autoscale_max_slots=NUMBER_OF_AUTOSCALING_SLOTS \ RESERVATION_NAME
Dabei gilt:
ADMIN_PROJECT_ID
: die Projekt-IDLOCATION
: Der Standort der Reservierung. Wenn Sie einen BigQuery Omni-Standort auswählen, ist Ihre Versionsoption auf die Enterprise-Version beschränkt.NUMBER_OF_BASELINE_SLOTS
: die Anzahl der Basisslots, die dieser Reservierung zugewiesen werden sollenRESERVATION_NAME
: der Name der ReservierungEDITION
: 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-Editing.NUMBER_OF_AUTOSCALING_SLOTS
: die Anzahl der Autoscaling-Slots, die der Reservierung zugewiesen sind. Dies entspricht dem Wert der maximalen Reservierungsgröße abzüglich der Anzahl der Referenz-Slots.
Weitere Informationen zum Flag --ignore_idle_slots
finden Sie unter Inaktive Slots. Der Standardwert ist false
.
Terraform
Verwenden Sie die Ressource google_bigquery_reservation
:
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Im folgenden Beispiel wird eine Reservierung mit dem Namen my-reservation
erstellt:
Führen Sie die Schritte in den folgenden Abschnitten aus, um Ihre Terraform-Konfiguration auf ein Google Cloud-Projekt anzuwenden.
Cloud Shell vorbereiten
- Rufen Sie Cloud Shell auf.
-
Legen Sie das Google Cloud-Standardprojekt fest, auf das Sie Ihre Terraform-Konfigurationen anwenden möchten.
Sie müssen diesen Befehl nur einmal pro Projekt und in jedem beliebigen Verzeichnis ausführen.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Umgebungsvariablen werden überschrieben, wenn Sie in der Terraform-Konfigurationsdatei explizite Werte festlegen.
Verzeichnis vorbereiten
Jede Terraform-Konfigurationsdatei muss ein eigenes Verzeichnis haben (auch als Stammmodul bezeichnet).
-
Erstellen Sie in Cloud Shell ein Verzeichnis und eine neue Datei in diesem Verzeichnis. Der Dateiname muss die Erweiterung
.tf
haben, z. B.main.tf
. In dieser Anleitung wird die Datei alsmain.tf
bezeichnet.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Wenn Sie einer Anleitung folgen, können Sie den Beispielcode in jedem Abschnitt oder Schritt kopieren.
Kopieren Sie den Beispielcode in das neu erstellte
main.tf
.Kopieren Sie optional den Code aus GitHub. Dies wird empfohlen, wenn das Terraform-Snippet Teil einer End-to-End-Lösung ist.
- Prüfen und ändern Sie die Beispielparameter, die auf Ihre Umgebung angewendet werden sollen.
- Speichern Sie die Änderungen.
-
Initialisieren Sie Terraform. Dies ist nur einmal für jedes Verzeichnis erforderlich.
terraform init
Fügen Sie optional die Option
-upgrade
ein, um die neueste Google-Anbieterversion zu verwenden:terraform init -upgrade
Änderungen anwenden
-
Prüfen Sie die Konfiguration und prüfen Sie, ob die Ressourcen, die Terraform erstellen oder aktualisieren wird, Ihren Erwartungen entsprechen:
terraform plan
Korrigieren Sie die Konfiguration nach Bedarf.
-
Wenden Sie die Terraform-Konfiguration an. Führen Sie dazu den folgenden Befehl aus und geben Sie
yes
an der Eingabeaufforderung ein:terraform apply
Warten Sie, bis Terraform die Meldung „Apply complete“ anzeigt.
- Öffnen Sie Ihr Google Cloud-Projekt, um die Ergebnisse aufzurufen. Rufen Sie in der Google Cloud Console Ihre Ressourcen in der Benutzeroberfläche auf, um sicherzustellen, dass Terraform sie erstellt oder aktualisiert hat.
Python
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.
- Legen Sie die Zielnebenläufigkeit von Jobs fest.
Wenn Sie die Version einer Reservierung ändern möchten, löschen Sie zuerst die Reservierung und create mit der aktualisierten Version.
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
Rufen Sie in der Google Cloud Console die Seite „BigQuery“ auf.
Gehen Sie im Navigationsbereich zum Abschnitt Kapazitätsverwaltung.
Klicken Sie auf den Tab Slot-Reservierungen.
Suchen Sie die Reservierung, die Sie aktualisieren möchten.
Maximieren Sie die Option
Aktionen.Klicken Sie auf Bearbeiten.
Geben Sie im Dialogfeld Maximale Reservierungsgröße auswählen die maximale Reservierungsgröße ein.
Geben Sie im Feld Referenz-Slots die Anzahl der Referenz-Slots ein.
Klicken Sie zum Erweitern des Abschnitts Erweiterte Einstellungen auf den
Erweiterungspfeil.Optional: Um die Zielnebenläufigkeit von Jobs festzulegen, klicken und aktivieren Sie die Schaltfläche Automatische Zielnebenläufigkeit von Jobs überschreiben und geben Sie die Zielnebenläufigkeit von Jobs ein.
Klicken Sie auf Speichern.
SQL
Verwenden Sie die DDL-Anweisung ALTER RESERVATION SET OPTIONS
, um die Größe einer Reservierung zu ändern.
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Geben Sie im Abfrageeditor die folgende Anweisung ein:
ALTER RESERVATION `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME` SET OPTIONS ( slot_capacity = NUMBER_OF_BASELINE_SLOTS, autoscale_max_slots = NUMBER_OF_AUTOSCALING_SLOTS);
Ersetzen Sie Folgendes:
ADMIN_PROJECT_ID
: die Projekt-ID des Administrationsprojekts, dem die Reservierungsressource gehörtLOCATION
: 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_BASELINE_SLOTS
: die Anzahl der Basisslots, die dieser Reservierung zugewiesen werden sollenNUMBER_OF_AUTOSCALING_SLOTS
: die Anzahl der Autoscaling-Slots, die der Reservierung zugewiesen sind. Dies entspricht dem Wert der maximalen Reservierungsgröße abzüglich der Anzahl der Referenz-Slots.
Klicken Sie auf
Ausführen.
Informationen zum Ausführen von Abfragen finden Sie unter Interaktive Abfrage 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_BASELINE_SLOTS \ --autoscale_max_slots=NUMBER_OF_AUTOSCALING_SLOTS \ --reservation RESERVATION_NAME
Dabei gilt:
ADMIN_PROJECT_ID
: die Projekt-IDLOCATION
: der Standort der ReservierungNUMBER_OF_BASELINE_SLOTS
: die Anzahl der Basisslots, die dieser Reservierung zugewiesen werden sollenRESERVATION_NAME
: der Name der ReservierungNUMBER_OF_AUTOSCALING_SLOTS
: die Anzahl der Autoscaling-Slots, die der Reservierung zugewiesen sind. Dies entspricht dem Wert der maximalen Reservierungsgröße abzüglich der Anzahl der Referenz-Slots.
Python
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-IDLOCATION
: der Standort der ReservierungRESERVATION_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.
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
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:
ADMIN_PROJECT_ID
: die Projekt-ID des Administrationsprojekts, dem die Reservierungsressourcen gehörenLOCATION
: der Standort der Reservierungen
Klicken Sie auf
Ausführen.
Informationen zum Ausführen von Abfragen finden Sie unter Interaktive Abfrage 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:
ADMIN_PROJECT_ID
: die Projekt-ID des Administrationsprojekts, dem die Reservierungsressourcen gehörenLOCATION
: der Standort der Reservierungen
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
Rufen Sie in der Google Cloud Console die Seite „BigQuery“ auf.
Gehen Sie im Navigationsbereich zum Abschnitt Kapazitätsverwaltung.
Klicken Sie auf den Tab Reservierungen.
Suchen Sie die Reservierung, die Sie löschen möchten.
Maximieren Sie die Option
Aktionen.Klicken Sie auf Löschen.
Klicken Sie im Dialogfeld Reservierung löschen auf Löschen.
SQL
Verwenden Sie die DDL-Anweisung DROP RESERVATION
, um eine Reservierung zu löschen.
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Geben Sie im Abfrageeditor die folgende Anweisung ein:
DROP RESERVATION `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME`;
Ersetzen Sie Folgendes:
ADMIN_PROJECT_ID
: die Projekt-ID des Administrationsprojekts, dem die Reservierungsressource gehörtLOCATION
: der Standort der ReservierungRESERVATION_NAME
: die ID der Reservierung
Klicken Sie auf
Ausführen.
Informationen zum Ausführen von Abfragen finden Sie unter Interaktive Abfrage 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örtLOCATION
: der Standort der ReservierungRESERVATION_NAME
: der Name der Reservierung
Python