Kosten schätzen und kontrollieren
Auf dieser Seite wird gezeigt, wie Sie die Kosten schätzen können, und es werden Practices zur Kostenkontrolle in BigQuery vorgestellt. BigQuery bietet zwei Arten von Preismodellen: On-Demand- und kapazitätsbasierte Preise. Informationen zu den Preisen finden Sie unter BigQuery-Preise.
Mit BigQuery können Sie die Kosten für das Ausführen einer Abfrage schätzen, die von verschiedenen Abfragen verarbeitete Byte berechnen und basierend auf Ihrer voraussichtlichen Nutzung eine monatliche Kostenschätzung erhalten. Wenn Sie die Kosten kontrollieren möchten, müssen Sie außerdem die Best Practices für die Optimierung der Abfrageberechnung und den BigQuery-Speicher befolgen. Kostenspezifische Best Practices finden Sie unter Abfragekosten kontrollieren.
Analysieren Sie BigQuery-Audit-Logs, um die Abfragekosten und die BigQuery-Nutzung zu überwachen.
Abfragekosten schätzen
BigQuery bietet verschiedene Methoden zur Kostenschätzung:
- Mit der Option Probelauf für Abfragen können Sie die Kosten schätzen, bevor Sie eine Abfrage mit dem On-Demand-Preismodell ausführen.
- Berechnen Sie die Anzahl der von verschiedenen Abfragetypen verarbeiteten Byte.
- Rufen Sie die monatlichen Kosten basierend auf der geplanten Nutzung mit dem Google Cloud-Preisrechner ab.
Berechnung der On-Demand-Abfragegröße
In den folgenden Abschnitten erfahren Sie, wie beim On-Demand-Abrechnungsmodell die Anzahl der Byte berechnet wird, die von den verschiedenen Abfragetypen verarbeitet werden:
Spaltenformate in Cloud Storage abfragen
Wenn Ihre externen Daten in ORC oder Parquet gespeichert sind, wird die Anzahl der berechneten Byte auf die von BigQuery gelesenen Spalten beschränkt. Da die Datentypen aus einer externen Datenquelle von der Abfrage in BigQuery-Datentypen konvertiert werden, wird die Anzahl der gelesenen Byte basierend auf der Größe der BigQuery-Datentypen berechnet. Informationen zu Datentypen und -konvertierungen finden Sie auf den folgenden Seiten:
Verwenden Sie den Google Cloud-Preisrechner.
Mit dem Google Cloud-Preisrechner können Sie die monatlichen Gesamtkosten für BigQuery anhand der voraussichtlichen Nutzung schätzen.
On demand
So schätzen Sie die Kosten im Google Cloud-Preisrechner, wenn Sie das On-Demand-Preismodell verwenden:
- Öffnen Sie den Google Cloud-Preisrechner,
- Klicken Sie auf "BigQuery".
- Klicken Sie auf den Tab On-Demand.
- Geben Sie unter Speicherpreise die geschätzte Größe der Tabelle in die Speicherfelder ein. Sie müssen je nach Abrechnungsmodell für die Dataset-Speicherung nur den physischen Speicher oder nur den logischen Speicher schätzen.
- Geben Sie bei Abfragepreis die geschätzten Byte ein, die beim Probelauf oder bei der Abfragevalidierung gelesen werden.
- Klicken Sie auf Der Schätzung hinzufügen.
- Die Schätzung wird auf der rechten Seite angezeigt. Sie können die Schätzung speichern oder per E-Mail senden.
Weitere Informationen finden Sie unter On-Demand-Preise.
Versionen
Führen Sie die folgenden Schritte aus, um die Kosten im Google Cloud-Preisrechner zu schätzen, wenn Sie das kapazitätsbasierte Preismodell mit BigQuery-Versionen verwenden:
- Öffnen Sie den Google Cloud-Preisrechner,
- Klicken Sie auf "BigQuery".
- Klicken Sie auf den Tab Versionen.
- Wählen Sie den Standort aus, an dem die Slots verwendet werden.
- Gewünschte Version auswählen
- Wählen Sie die Maximale Anzahl von Slots, Referenz-Slots, optional Zusicherung und Geschätzte Auslastung des Autoscalings aus.
- Wählen Sie den Speicherort für die Daten aus.
- Geben Sie Ihre geschätzten Speichernutzung für Aktiver Speicher, Langfristiger Speicher, Streaming-Insert-Anweisungen und Streaming-Lesevorgänge ein. Sie müssen je nach Abrechnungsmodell für die Dataset-Speicherung nur den physischen Speicher oder nur den logischen Speicher schätzen.
- Klicken Sie auf Der Schätzung hinzufügen.
Weitere Informationen finden Sie unter Kapazitätsbasierte Preise.
Abfragekosten kontrollieren
Zum Optimieren der Abfragekosten müssen Sie ein optimierte Speicherung und Abfrageberechnung verwenden. Weitere Methoden zur Kontrolle der Abfragekosten finden Sie in den folgenden Abschnitten:
Abfragekosten vor der Abfrageausführung prüfen
Best Practice: Erstellen Sie vor dem Ausführen von Abfragen eine Vorschau, um die Kosten abzuschätzen.
Abfragen werden abhängig von der Anzahl der gelesenen Byte in Rechnung gestellt. Mit einer der folgenden Möglichkeiten können Sie die Kosten einer Abfrage vorab schätzen:
- Verwenden Sie die Abfragevalidierung in der Google Cloud Console.
- Verwenden Sie den Google Cloud-Preisrechner.
- Führen Sie einen Probelauf für Abfragen aus.
Abfragevalidierung verwenden
Wenn Sie eine Abfrage in der Google Cloud Console eingeben, überprüft die Abfragevalidierung die Abfragesyntax und liefert eine geschätzte Anzahl der gelesenen Byte. Mit dieser Information können Sie im Preisrechner die Abfragekosten einschätzen.
Wenn die Abfrage ungültig ist, wird bei der Abfragevalidierung eine Fehlermeldung angezeigt. Beispiel:
Not found: Table myProject:myDataset.myTable was not found in location US
Wenn Ihre Abfrage gültig ist, gibt die Abfragevalidierung eine Schätzung der Anzahl an Byte an, die zum Verarbeiten der Abfrage erforderlich ist. Beispiel:
This query will process 623.1 KiB when run.
Probelauf durchführen
So führen Sie einen Probelauf aus:
Console
Wechseln Sie zur BigQuery-Seite.
Geben Sie Ihre Abfrage in den Abfrageeditor ein.
Wenn die Abfrage gültig ist, wird automatisch ein Häkchen zusammen mit der Datenmenge angezeigt, die durch die Abfrage verarbeitet wird. Wenn die Abfrage ungültig ist, wird ein Ausrufezeichen mit einer Fehlermeldung angezeigt.
bq
Geben Sie eine Abfrage wie die folgende zusammen mit dem Flag --dry_run
ein:
bq query \ --use_legacy_sql=false \ --dry_run \ 'SELECT COUNTRY, AIRPORT, IATA FROM `project_id`.dataset.airports LIMIT 1000'
Bei einer gültigen Abfrage gibt der Befehl die folgende Antwort zurück:
Query successfully validated. Assuming the tables are not modified, running this query will process 10918 bytes of data.
API
Für einen Probelauf über die API übergeben Sie einen Abfragejob, bei dem im JobConfiguration-Typ dryRun
auf true
gesetzt ist.
Go
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Go in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Go API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Java
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Java in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Java API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Node.js
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Node.js in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Node.js API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
PHP
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von PHP in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery PHP API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Python
Setzen Sie das Attribut QueryJobConfig.dry_run auf True
.
Client.query() gibt immer einen abgeschlossenen QueryJob zurück, wenn die Abfrage für einen Probelauf konfiguriert ist.
Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Python-Einrichtungsanleitung in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Python API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Keine Abfragen ausführen, um Tabellendaten zu untersuchen
Best Practice: Führen Sie keine Abfragen aus, um Tabellendaten zu entdecken oder eine Vorschau zu erstellen.
Wenn Sie mit Daten experimentieren oder diese erkunden, können Sie sie mit Tabellenvorschauoptionen kostenlos ansehen, ohne Ihr Kontingent zu nutzen.
In BigQuery stehen Ihnen die folgenden Optionen für eine Datenvorschau zur Verfügung:
- Klicken Sie in der Google Cloud Console auf der Seite mit den Tabellendetails auf den Tab Vorschau, um die Daten abzufragen.
- Verwenden Sie im bq-Befehlszeilentool den Befehl
bq head
und geben Sie die Anzahl der Zeilen für die Vorschau an. - Verwenden Sie in der API
tabledata.list
zum Abrufen von Tabellendaten aus einer bestimmten Gruppe von Zeilen. - Verwenden Sie
LIMIT
nicht in nicht geclusterten Tabellen. Bei nicht geclusterten Tabellen werden die Rechenkosten durch eineLIMIT
-Klausel nicht gesenkt.
Anzahl der berechneten Byte einschränken
Best Practice: Verwenden Sie die Einstellung für maximal berechnete Bytes, um die Abfragekosten zu begrenzen.
Sie können die Anzahl der berechneten Bytes für eine Abfrage mit der Einstellung für maximal berechnete Bytes begrenzen. Wenn Sie einen maximalen Wert für die berechneten Byte festlegen, wird die Anzahl der Byte, die von der Abfrage gelesen werden, vor der Abfrageausführung geschätzt. Wenn die Anzahl der geschätzten Byte die Grenze überschreitet, schlägt die Abfrage fehl, ohne dass eine Gebühr anfällt.
Bei geclusterten Tabellen liegt die Schätzung der Anzahl der Byte, die für eine Abfrage in Rechnung gestellt werden, über eine Obergrenze und kann höher sein als die tatsächliche Anzahl von Byte, die nach Ausführen der Abfrage in Rechnung gestellt werden. Wenn Sie eine Höchstmenge für abgerechnete Byte festlegen, kann die Abfrage einer geclusterten Tabelle fehlschlagen, selbst wenn die tatsächlich abgerechneten Byte die festgelegte Höchstmenge nicht überschreiten würden.
Wenn eine Abfrage aufgrund der Einstellung für maximal abgerechnete Byte fehlschlägt, wird ein Fehler wie der folgende zurückgegeben:
Error: Query exceeded limit for bytes billed: 1000000. 10485760 or higher
required.
So legen Sie die maximal berechneten Byte fest:
Console
- Klicken Sie im Abfrageeditor auf Mehr > Abfrageeinstellungen > Erweiterte Optionen.
- Geben Sie im Feld Maximale Menge abgerechneter Byte eine Ganzzahl ein.
- Klicken Sie auf Speichern.
bq
Führen Sie den Befehl bq query
mit dem Flag --maximum_bytes_billed
aus.
bq query --maximum_bytes_billed=1000000 \ --use_legacy_sql=false \ 'SELECT word FROM `bigquery-public-data`.samples.shakespeare'
API
Legen Sie das Attribut maximumBytesBilled
in JobConfigurationQuery
oder QueryRequest
fest.
LIMIT
nicht in nicht geclusterten Tabellen verwenden
Best Practice: Verwenden Sie für nicht geclusterte Tabellen nicht die LIMIT
-Klausel zur Kostenkontrolle.
Bei nicht geclusterten Tabellen hat die Anwendung einer LIMIT
-Klausel auf eine Abfrage keine Auswirkungen auf die Menge der gelesenen Daten. Ihnen werden damit also alle von der Abfrage in der kompletten Tabelle gelesenen Byte in Rechnung gestellt, auch wenn die Abfrage nur eine Teilmenge zurückgibt. Bei einer geclusterten Tabelle kann eine LIMIT
-Klausel die Anzahl der gescannten Byte reduzieren, da der Scan beendet wird, wenn genügend Blöcke gescannt wurden, um das Ergebnis zu erhalten. Ihnen werden nur die gescannten Byte in Rechnung gestellt.
Kosten in einem Dashboard einsehen und Audit-Logs abfragen
Best Practice: Erstellen Sie ein Dashboard, um Ihre Abrechnungsdaten einzusehen und die Nutzung von BigQuery anzupassen. Darüber hinaus können Sie Ihre Audit-Logs in BigQuery streamen, um die Nutzungsmuster zu analysieren.
Sie können Ihre Abrechnungsdaten nach BigQuery exportieren und sie in einem Tool wie Looker Studio visualisieren. Eine Anleitung zum Erstellen eines Abrechnungs-Dashboards finden Sie unter Google Cloud-Abrechnung mit BigQuery und Looker Studio visualisieren.
Außerdem haben Sie die Möglichkeit, Ihre Audit-Logs in BigQuery zu streamen und sie auf Muster wie die Abfragekosten nach Nutzer zu analysieren.
Abfrageergebnisse in Phasen erfassen
Best Practice: Erfassen Sie Abfrageergebnisse nach Möglichkeit in separaten Phasen.
Wenn Sie eine große Abfrage mit mehreren Phasen erstellen, liest BigQuery jedes Mal, wenn Sie diese ausführen, alle Daten, auf die sich die Abfrage bezieht. Bei jeder Ausführung der Abfrage werden Ihnen alle gelesenen Daten in Rechnung gestellt.
Teilen Sie stattdessen Ihre Abfrage in Phasen auf, wobei jede Phase ihre Abfrageergebnisse in eine Zieltabelle schreibt. Durch das Abfragen der kleineren Zieltabelle verringert sich die Menge der gelesenen Daten und die Kosten sinken. Der finanzielle Aufwand für die Speicherung der erfassten Ergebnisse ist deutlich geringer als der für die Verarbeitung großer Datenmengen.
Tabellenablauf für Zieltabellen verwenden
Best Practice: Wenn Sie große Abfrageergebnisse in eine Zieltabelle schreiben, verwenden Sie am besten die Standardablaufzeit von Tabellen, um die Daten zu löschen, sobald sie nicht mehr benötigt werden.
Das Aufbewahren großer Ergebnissets im BigQuery-Speicher ist teuer. Wenn Sie die Ergebnisse nicht dauerhaft benötigen, sollten Sie die Daten durch Festlegen der Standardablaufzeit von Tabellen automatisch löschen lassen.
Weitere Informationen finden Sie unter Speicherpreise.
Nächste Schritte
- Informationen zu BigQuery-Preisen
- Abfrage optimieren
- Speicher optimieren
Informationen zu Abrechnung, zu Benachrichtigungen und zur Visualisierung von Daten finden Sie in den folgenden Themen: