Einführung in BI Engine
BigQuery BI Engine ist ein schneller In-Memory-Analysedienst, der viele SQL-Abfragen in BigQuery beschleunigt. Dazu werden die am häufigsten verwendeten Daten auf intelligente Weise im Cache gespeichert. BI Engine kann SQL-Abfragen von jeder Quelle beschleunigen, einschließlich solcher, die von Datenvisualisierungstools geschrieben wurden, und kann im Cache gespeicherte Tabellen für eine kontinuierliche Optimierung verwalten. So können Sie die Abfrageleistung ohne manuelle Feinabstimmung oder Data Tiering verbessern. Sie können Tabellen clustern und partitionieren, um die BI Engine-Leistung für große Tabellen weiter zu optimieren.
Wenn Ihr Dashboard beispielsweise nur die Daten des letzten Quartals anzeigt, können Sie Ihre Tabellen nach Zeit partitionieren, sodass nur die neuesten Partitionen in den Speicher geladen werden. Sie können auch die Vorteile von materialisierten Ansichten und BI Engine kombinieren. Dies funktioniert besonders gut, wenn die materialisierten Ansichten verwendet werden, um Daten zu verknüpfen und zu vereinfachen, um ihre Struktur für BI Engine zu optimieren.
BI Engine bietet folgende Vorteile:
- BigQuery API-Kompatibilität:BI Engine ist direkt in die BigQuery API eingebunden. Jede BI-Lösung oder benutzerdefinierte Anwendung, die über Standardmechanismen wie REST oder JDBC- und ODBC-Treiber mit der BigQuery API arbeitet, kann BI Engine ohne Änderungen verwenden.
- Vektorisierte Laufzeit: Die Verwendung der vektorisierten Verarbeitung in einer Ausführungs-Engine ermöglicht eine effizientere Nutzung der modernen CPU-Architektur, da immer mehrere Datenbatches ausgeführt werden. BI Engine verwendet auch erweiterte Datencodierungen, insbesondere die Ausführungslänge des Wörterbuchs, um die in der speicherinternen Ebene gespeicherten Daten weiter zu komprimieren.
- Nahtlose Integration: BI Engine funktioniert mit BigQuery-Features und -Metadaten, einschließlich autorisierter Ansichten, Spaltensicherheit sowie Datenmaskierung.
- Reservierungszuweisungen:BI Engine-Reservierungen verwalten die Speicherzuweisung für jedes Projekt und jede Region separat. Die BI Engine speichert nur die abgefragten, erforderlichen Teile von Spalten und Partitionen im Cache. Mit bevorzugten Tabellen können Sie angeben, für welche Tabellen die BI Engine-Beschleunigung verwendet werden soll.
In den meisten Organisationen wird die BI Engine von einem Abrechnungsadministrator aktiviert, der Kapazität für die BI Engine-Beschleunigung reservieren muss. Weitere Informationen finden Sie unter BI Engine-Kapazität reservieren.
BI Engine-Anwendungsfälle
BI Engine kann viele SQL-Abfragen erheblich beschleunigen, einschließlich solcher, die für BI-Dashboards verwendet werden. Beschleunigen ist am effektivsten, wenn Sie die Tabellen ermitteln, die für Ihre Abfragen wichtig sind, und diese dann als bevorzugte Tabellen markieren. Wenn Sie BI Engine verwenden möchten, erstellen Sie eine Reservierung in einer Region und geben Sie die Größe an. Sie können BigQuery anhand der Nutzungsmuster des Projekts festlegen lassen, welche Tabellen im Cache gespeichert werden, oder Tabellen angeben, um zu verhindern, dass anderer Traffic die Beschleunigung stört.
BI Engine ist in folgenden Anwendungsfällen nützlich:
- Sie verwenden BI-Tools zum Analysieren Ihrer Daten: BI Engine beschleunigt BigQuery-Abfragen, unabhängig davon, ob sie in der BigQuery-Konsole, einem BI-Tool wie Looker Studio oder Tableau, einer Clientbibliothek, einer API oder einem ODBC- oder JDBC-Connector ausgeführt werden. Dies kann die Leistung von Dashboards, die über eine integrierte Verbindung (API) oder Connectors mit BigQuery verbunden sind, erheblich verbessern.
- Sie haben Tabellen, die häufig abgefragt werden: Mit BI Engine können Sie bevorzugte Tabellen beschleunigen. Dies ist hilfreich, wenn Sie eine Teilmenge von Tabellen haben, die häufiger abgefragt oder für Dashboards mit hoher Sichtbarkeit verwendet werden.
BI Engine erfüllt in den folgenden Fällen möglicherweise nicht Ihre Anforderungen:
- Sie verwenden in Ihren Abfragen Platzhalter: Abfragen, die auf Platzhaltertabellen verweisen, werden von BI Engine nicht unterstützt und profitieren nicht von einer Beschleunigung.
- Sie benötigen BigQuery-Features, die von BI Engine nicht unterstützt werden: BI Engine unterstützt die meisten SQL-Funktionen und ‑Operatoren. Zu den nicht von BI Engine unterstützten Funktionen gehören externe Tabellen, Sicherheit auf Zeilenebene und benutzerdefinierte Nicht-SQL-Funktionen.
Überlegungen zu BI Engine
Berücksichtigen Sie bei der Konfiguration von BI Engine Folgendes:
Für bestimmte Abfragen beschleunigen
Wenn Sie dafür sorgen möchten, dass eine Gruppe von Abfragen beschleunigt wird, erstellen Sie ein separates Projekt mit einer speziellen BI Engine-Reservierung. Schätzen Sie zuerst die für Ihre Abfragen erforderliche Rechenkapazität ab und legen Sie diese Tabellen dann als bevorzugte Tabellen für BI Engine fest.
Joins minimieren
BI Engine funktioniert am besten mit vorab verknüpften oder vorab aggregierten Daten und mit Abfragen mit einer kleinen Anzahl von Joins. Dies gilt insbesondere, wenn eine Seite des Join groß ist und die anderen wesentlich kleiner sind, z. B. wenn Sie eine große Faktentabelle abfragen, die mit kleineren Dimensionstabellen verknüpft ist. Sie können BI Engine mit materialisierten Ansichten kombinieren, die Joins ausführen, um eine einzelne große, flache Tabelle zu erzeugen. Auf diese Weise werden nicht für jede Abfrage dieselben Joins ausgeführt. Für eine optimale Abfrageleistung werden veraltete materialisierte Ansichten empfohlen.
Auswirkungen von BI Engine verstehen
Informationen zur Nutzung von BI Engine finden Sie unter BI Engine mit Cloud Monitoring überwachen oder durch Abfragen der Ansichten INFORMATION_SCHEMA.BI_CAPACITIES
und INFORMATION_SCHEMA.BI_CAPACITY_CHANGES
. Deaktivieren Sie die Option Im Cache gespeicherte Ergebnisse verwenden in BigQuery, um einen möglichst genauen Vergleich zu erhalten. Weitere Informationen finden Sie unter Im Cache gespeicherte Abfrageergebnisse verwenden.
Bevorzugte Tabellen
Mit bevorzugten BI Engine-Tabellen können Sie die BI Engine-Beschleunigung auf eine bestimmte Gruppe von Tabellen beschränken. Abfragen von allen anderen Tabellen verwenden reguläre BigQuery-Slots. Mit bevorzugten Tabellen können Sie beispielsweise nur die Tabellen und Dashboards beschleunigen, die Sie für Ihr Unternehmen als wichtig eingestuft haben.
Wenn im Projekt nicht genügend RAM vorhanden ist, um alle bevorzugten Tabellen zu speichern, lagert BI Engine Partitionen und Spalten aus, auf die in letzter Zeit nicht zugegriffen wurde. Durch diesen Prozess wird Arbeits-Speicher für neue Abfragen freigegeben, die beschleunigt werden müssen.
Einschränkungen für bevorzugte Tabellen
Für bevorzugte BI Engine-Tabellen gelten folgende Einschränkungen:
- Sie können der Liste der bevorzugten Tabellenreservierung keine Ansichten hinzufügen. Bevorzugte BI Engine-Tabellen unterstützen nur Tabellen.
- Abfragen von materialisierte Ansichten werden nur beschleunigt, wenn sich sowohl die materialisierten Ansichten als auch ihre Basistabellen in der Liste der bevorzugten Tabellen befinden.
- Die Angabe von Partitionen oder Spalten zur Beschleunigung wird nicht unterstützt.
- Spalten vom Typ
JSON
werden nicht unterstützt und nicht von der BI Engine beschleunigt. - Abfragen, die auf mehrere Tabellen zugreifen, werden nur beschleunigt, wenn alle Tabellen bevorzugte Tabellen sind. Beispielsweise müssen alle Tabellen in einer Abfrage mit einer
JOIN
in der Liste der bevorzugten Tabellen enthalten sein, damit sie beschleunigt werden. Wenn nur eine Tabelle nicht in der bevorzugten Liste ist, kann die Abfrage nicht BI Engine verwenden. - Öffentliche Datasets werden in der Google Cloud Console nicht unterstützt. Verwenden Sie die API oder die DDL, um eine öffentliche Tabelle als bevorzugte Tabelle hinzuzufügen.
Beschränkungen
BigQuery BI Engine unterliegt den folgenden Einschränkungen.
Joins
BI Engine beschleunigt bestimmte Arten von Join-Abfragen. Die Beschleunigung erfolgt bei Unterabfragen auf Blattebene mit INNER
und LEFT OUTER JOINS
, bei denen eine große Faktentabelle mit bis zu vier kleineren Dimensionstabellen verknüpft wird.
Für Tabellen mit kleinen Dimensionen gelten die folgenden Einschränkungen:
- Weniger als 5 Millionen Zeilen
- Größenlimit:
- Nicht partitionierte Tabellen: 5 GiB oder weniger
- Partitionierte Tabellen: Referenzierte Partitionen mit maximal 1 GB
Fensterfunktionen
Für Fensterfunktionen, die auch als Analysefunktionen bezeichnet werden, gelten die folgenden Einschränkungen, wenn sie von BigQuery BI Engine beschleunigt werden:
- Die Eingabephasen werden von BigQuery BI Engine beschleunigt, wenn sie keine Fensterfunktionen haben. In diesem Fall
INFORMATION_SCHEMA.JOBS
rufen Sie die Berichtebi_engine_statistics
auf.acceleration_mode
alsFULL_INPUT
. - Die Eingabephasen von Abfragen mit Fensterfunktionen in ihren Eingabephasen werden von BI Engine beschleunigt, können jedoch nicht die im Abschnitt Einschränkungen für BI Engine-Fensterfunktionen beschriebenen Einschränkungen haben.
In diesem Fall werden die Eingabephasen oder die vollständige Abfrage in BI Engine ausgeführt. In diesem Fall
INFORMATION_SCHEMA.JOBS
rufen Sie die Berichtebi_engine_statistics
auf.acceleration_mode
alsFULL_INPUT
oderFULL_QUERY
.
Weitere Informationen zum Feld BiEngineStatistics
finden Sie in der Jobreferenz.
Einschränkungen für BI Engine-Fensterfunktionen
Abfragen mit Fensterfunktionen werden nur in der BI Engine ausgeführt, wenn alle folgenden Bedingungen erfüllt sind:
- Bei der Abfrage wird genau eine Tabelle gescannt.
- Die Tabelle ist nicht partitioniert.
- Die Tabelle enthält weniger als fünf Millionen Zeilen.
- Die Abfrage enthält keine
JOIN
-Operatoren. - Die Größe der gescannten Tabelle mal der Anzahl der Operatoren der Fensterfunktion überschreitet 300 MiB nicht.
Zwei Fensterfunktionen mit identischen OVER
-Klauseln und denselben direkten Eingaben können denselben Fensterfunktionsoperator nutzen. Beispiel:
SELECT ROW_NUMBER() OVER (ORDER BY x), SUM(x) OVER (ORDER BY x) FROM my_table
hat nur einen Operator der Fensterfunktion.SELECT ROW_NUMBER() OVER (ORDER BY x), SUM(x) OVER (PARTITION BY y ORDER BY x) FROM my_table
hat zwei Operatoren für Fensterfunktionen, da die beiden Funktionen unterschiedlicheOVER
-Klauseln haben.SELECT ROW_NUMBER() OVER (ORDER BY x) FROM (SELECT SUM(x) OVER (ORDER BY x) AS x FROM my_table)
hat zwei Operatoren für Fensterfunktionen, da die beiden Funktionen unterschiedliche direkte Eingaben haben, obwohl dieOVER
-Klauseln identisch sind.
Unterstützte Fensterfunktionen
Die folgenden referenzierten Fensterfunktionen werden unterstützt:
ANY_VALUE
AVG
BIT_AND
BIT_OR
BIT_XOR
CORR
COUNT
COUNTIF
COVAR_POP
COVAR_SAMP
CUME_DIST
DENSE_RANK
FIRST_VALUE
LAG
LAST_VALUE
LEAD
LOGICAL_AND
LOGICAL_OR
MAX
MIN
NTH_VALUE
NTILE
PERCENT_RANK
PERCENTILE_CONT
PERCENTILE_DISC
RANK
ROW_NUMBER
ST_CLUSTERDBSCAN
STDDEV_POP
STDDEV_SAMP
STDDEV
STRING_AGG
SUM
VAR_POP
VAR_SAMP
VARIANCE
Wenn Fensterfunktionen nicht unterstützt werden, wird möglicherweise der folgende Fehler angezeigt:
Die Analysefunktion ist nicht mit anderen Operatoren kompatibel oder ihre Eingaben sind zu groß.
Weitere Einschränkungen der BI Engine
Die BI Engine-Beschleunigung ist für die folgenden Features nicht verfügbar:
- JavaScript-UDFs
- Externe Tabellen
- Abfrage von JSON-Daten – Fehlermeldung: Der native JSON-Typ wird nicht unterstützt
- Ergebnisse in eine permanente BigQuery-Tabelle schreiben
- Tabellen, die Upserts mit BigQuery Change Data Capture enthalten
- Transaktionen
- Abfragen, die mehr als 1 GiB an Daten zurückgeben. Für latenzempfindliche Anwendungen wird eine Antwortgröße von weniger als 1 MiB empfohlen.
- Sicherheit auf Zeilenebene
Umgehung für nicht unterstützte Funktionen
Einige SQL-Funktionen werden in BigQuery BI Engine nicht unterstützt. Es gibt jedoch eine Problemumgehung:
- Schreiben Sie eine Abfrage in BigQuery.
- Speichern Sie die Ergebnisse der Abfrage in einer Tabelle.
- Planen Sie Ihre Abfrage, um die Tabelle regelmäßig zu aktualisieren. Eine stündliche oder tägliche Aktualisierungsrate funktioniert am besten. Eine Aktualisierung jede Minute kann den Cache zu häufig ungültig machen.
- Verweisen Sie in leistungskritischen Abfragen auf diese Tabelle.
Kontingente und Limits
Informationen zu Kontingenten und Limits für BI Engine finden Sie unter BigQuery-Kontingente und -Limits.
Preise
Für die Reservierung, die Sie für die BI Engine-Kapazität erstellen, fallen Kosten an. Informationen zur BI Engine-Preisgestaltung finden Sie auf der Seite BigQuery Preisgestaltung.
Nächste Schritte
- Informationen zum Erstellen Ihrer BI Engine-Reservierung finden Sie unter BI Engine-Kapazität reservieren.
- Informationen zum Festlegen bevorzugter Tabellen finden Sie unter Bevorzugte BI Engine-Tabellen.
- Informationen zur Nutzung von BI Engine finden Sie unter BI Engine mit Cloud Monitoring überwachen.
- Informationen zu BI Engine-optimierten Funktionen
- Erfahren Sie, wie Sie BI Engine mit Folgendem verwenden: