Einführung in materialisierte Ansichten
Materialisierte Ansichten sind vorausberechnete Ansichten, in denen die Ergebnisse einer SQL-Abfrage regelmäßig gespeichert werden. Materialisierte Ansichten können die gesamte Verarbeitungszeit und die Gebühren für Abfragen reduzieren, da Abfrageergebnisse gespeichert werden. Dadurch wird die Datenmenge, die für jede Abfrage gescannt werden muss, verringert. BigQuery prüft, ob materialisierte Ansichten aktuelle Daten enthalten, indem Updates im Hintergrund berechnet werden. Dieser Vorgang wird inkrementell ausgeführt, indem nur die geänderten Daten in der Basistabelle verwendet werden. Dabei sind einige Aspekte zu berücksichtigen. Materialisierte Ansichten können entweder direkt abgefragt oder von BigQuery zum Optimieren von Abfragen an die zugehörigen Basistabellen verwendet werden.
Materialisierte Ansichten haben folgende Hauptmerkmale:
- Keinerlei Wartung erforderlich: Materialisierte Ansichten werden im Hintergrund vorberechnet, wenn sich die Basistabellen ändern. Alle inkrementellen Datenänderungen aus den Basistabellen werden automatisch zu den materialisierten Ansichten hinzugefügt, ohne dass der Nutzer eingreifen müssen.
- Aktuelle Daten: Materialisierte Ansichten geben aktuelle Daten zurück. Wenn Änderungen an Basistabellen die materialisierte Ansicht ungültig machen, werden Daten direkt aus den Basistabellen gelesen. Wenn die Änderungen an den Basistabellen die materialisierte Ansicht nicht entwerten, werden die restlichen Daten aus der materialisierten Ansicht und nur die Änderungen aus den Basistabellen gelesen.
- Intelligente Feinabstimmung. Wenn ein Teil einer Abfrage gegen die Basistabelle durch die Abfrage der materialisierten Ansicht gelöst werden kann, leitet BigQuery die Abfrage um, um die materialisierte Ansicht für eine bessere Leistung und Effizienz zu verwenden.
Vergleich mit logischen Ansichten
In der folgenden Tabelle sind die Ähnlichkeiten und Unterschiede zwischen logischen Ansichten und materialisierten Ansichten in BigQuery zusammengefasst.
Komponente | Logische Ansichten | Materialisierte Ansichten |
---|---|---|
Compute-Optimierung | Nein | Ja |
Unterstützung für SQL-Abfrage | Alle | Begrenzt1 |
Partitionierung und Clustering | – | Ja |
Inkrementelle Aktualisierung | Nein | Ja |
Zusätzlicher Speicher | Nein | Ja |
Abfrage neu schreiben | Nein | Ja |
Verwaltungskosten | Nein | Ja |
Veraltete Daten | Nie | Optional 2 |
1 Die Option --allow_non_incremental_definition
unterstützt eine größere Auswahl an SQL-Abfragen zum Erstellen materialisierter Ansichten. Eine Liste der unterstützten materialisierten Ansichten finden Sie unter Abfragebeschränkungen.
2 Die Option --max_staleness
bietet bei der Verarbeitung großer, sich häufig ändernder Datasets eine dauerhaft hohe Leistung mit kontrollierten Kosten.
Anwendungsfälle
Materialisierte Ansichten können Abfragen mit hohen Rechenkosten und kleinen Datasets optimieren. Zu den Prozessen, die von materialisierten Ansichten profitieren, gehören OLAP-Vorgänge (Online Analytical Processing), die eine umfangreiche Verarbeitung mit vorhersehbaren und wiederholten Abfragen erfordern, wie z. B. bei ETL-Prozessen (Extract, Transform, Load) oder BI-Pipelines (Business Intelligence).
In den folgenden Anwendungsfällen wird der Wert von materialisierten Ansichten erläutert. Materialisierte Ansichten können die Abfrageleistung verbessern, wenn Sie häufig Folgendes benötigen:
- Daten vorab aggregieren: Aggregation von Streamingdaten.
- Daten vorfiltern. Abfragen ausführen, die nur einen bestimmten Teil der Tabelle lesen.
- Pre-Join-Daten. Abfrage-Joins, insbesondere zwischen großen und kleinen Tabellen.
- Daten neu clustern: Abfragen ausführen, die von einem Clustering-Schema profitieren, das sich von den Basistabellen unterscheidet.
Intelligente Feinabstimmung
Materialisierte Ansichten können verwendet werden, um die Leistung von Abfragen transparent zu verbessern, ohne sie zu ändern. Mit einer materialisierten Ansicht können Sie Gruppen von Abfragen mit gemeinsamen Mustern optimieren, z. B. solche, die von einem BI-Tool generiert werden. Weitere Informationen finden Sie unter Materialisierte Ansichten verwenden.
Autorisierte materialisierte Ansichten
Sie können eine autorisierte materialisierte Ansicht erstellen, um eine Teilmenge von Daten aus einem Quelldataset für eine Ansicht in einem sekundären Dataset freizugeben. Anschließend können Sie diese Ansicht für bestimmte Nutzer und Gruppen (Hauptkonten) freigeben, die die freigegebenen Daten sehen können. Sie können die Daten abfragen, die Sie in einer Ansicht bereitstellen, aber nicht direkt auf das Quelldataset zugreifen.
Autorisierte Ansichten und autorisierte materialisierte Ansichten werden auf dieselbe Weise autorisiert. Weitere Informationen finden Sie unter Autorisierte Ansichten.
Interaktion mit anderen BigQuery-Features
Die folgenden BigQuery-Features funktionieren transparent mit materialisierten Ansichten:
Erklärung durch Abfrageplan: Der Abfrageplan gibt an, welche materialisierten Ansichten gescannt wurden (sofern vorhanden) und wie viele Bytes aus der materialisierten Ansicht und den Basistabellen insgesamt gelesen werden.
Abfrage-Caching: Die Ergebnisse einer Abfrage, die von BigQuery mit einer materialisierten Ansicht neu geschrieben werden, können im Rahmen der üblichen Beschränkungen (Verwendung deterministischer Funktionen, kein Streaming in die Basistabellen usw.) im Cache gespeichert werden.
Kostenbeschränkung: Wenn Sie einen Wert für die maximal in Rechnung gestellten Byte festgelegt haben und eine Abfrage eine Anzahl von Byte über das Limit hinaus lesen würde, schlägt die Abfrage fehl, ohne Kosten zu verursachen. Dies ist unabhängig davon, ob die Abfrage materialisierte Ansichten, die Basistabellen oder beides verwendet.
Kostenschätzung mit Probelauf: Bei einem Probelauf wird die Logik für das Neuschreiben der Abfrage anhand der verfügbaren materialisierten Ansichten wiederholt und eine Kostenschätzung bereitgestellt. Mit dieser Funktion können Sie testen, ob eine bestimmte Abfrage materialisierte Ansichten verwendet.
BigLake-Metadaten-Cache-fähige Tabellen
Materialisierte Ansichten über BigLake-Metadaten-Cache-fähigen Tabellen können auf strukturierte Daten verweisen, die in Cloud Storage und Amazon Simple Storage Service (Amazon S3) gespeichert sind. Diese materialisierten Ansichten funktionieren wie materialisierte Ansichten über von BigQuery verwalteten Speichertabellen, einschließlich der Vorteile einer automatischen Aktualisierung und intelligenten Abstimmung. Weitere Vorteile sind die Vorabaggregation, ‑filterung und ‑verknüpfung von Daten, die außerhalb von BigQuery gespeichert sind. Materialisierte Ansichten über BigLake-Tabellen werden in einem von BigQuery verwalteten Speicher gespeichert und weisen alle Eigenschaften dieses Speichers auf.
Wenn Sie eine materialisierte Ansicht über eine Amazon S3 BigLake-Tabelle erstellen, sind die Daten in der materialisierten Ansicht nicht für Joins mit BigQuery-Daten verfügbar. Wenn Sie Amazon S3-Daten in einer materialisierten Ansicht für Joins verfügbar machen möchten, erstellen Sie ein Replikat für materialisierte Ansichten. Sie können Replikate für materialisierte Ansichten nur über autorisierte materialisierte Ansichten erstellen.
Beschränkungen
- Es können Limits für Basistabellenreferenzen und andere Einschränkungen gelten. Weitere Informationen zu den Beschränkungen für materialisierte Ansichten finden Sie unter Kontingente und Beschränkungen.
- Die Daten einer materialisierten Ansicht können nicht direkt durch Vorgänge wie
COPY
,EXPORT
,LOAD
,WRITE
oder DML-Anweisungen (Data Manipulation Language, Datenbearbeitungssprache) aktualisiert oder bearbeitet werden. - Sie können eine vorhandene materialisierte Ansicht nicht durch eine materialisierte Ansicht mit demselben Namen ersetzen.
- Die Ansicht SQL kann nach dem Erstellen der materialisierten Ansicht nicht aktualisiert werden.
- Eine materialisierte Ansicht muss sich in derselben Organisation wie ihre Basistabellen befinden oder in demselben Projekt, wenn das Projekt nicht zu einer Organisation gehört.
- Materialisierte Ansichten verwenden eine eingeschränkte SQL-Syntax und eine begrenzte Anzahl von Aggregationsfunktionen. Weitere Informationen finden Sie unter Unterstützte materialisierte Ansichten.
- Materialisierte Ansichten können nicht in anderen materialisierten Ansichten verschachtelt werden.
- Materialisierte Ansichten können keine externen oder Platzhaltertabellen, logischen Ansichten1 oder Snapshots abfragen.
- Für materialisierte Ansichten wird nur der GoogleSQL-Dialekt unterstützt.
- Sie können Beschreibungen für materialisierte Ansichten festlegen, aber keine Beschreibungen für die einzelnen Spalten in der materialisierten Ansicht.
- Wenn Sie die Basistabelle löschen, ohne zuerst die materialisierte Ansicht zu löschen, schlagen Abfragen und Aktualisierungen der materialisierten Ansicht fehl. Wenn Sie die Basistabelle neu erstellen, müssen Sie auch die materialisierte Ansicht neu erstellen.
- Wenn eine materialisierte Ansicht eine Basistabelle mit aktivierter Erfassung von Änderungsdaten hat, kann in derselben Abfrage nicht auf diese Tabelle verwiesen werden.
- Nur nicht inkrementelle materialisierte Ansichten können Basistabellen für externe Spanner-Dataset-Tabellen haben.
Wenn die letzte Aktualisierung einer nicht inkrementellen materialisierten Ansicht außerhalb des Intervalls
max_staleness
erfolgt ist, werden die Basistabellen des externen Spanner-Datasets gelesen. Weitere Informationen zu Tabellen für externe Spanner-Datasets finden Sie unter Materialisierte Ansichten für externe Spanner-Datasets erstellen.
1 Die Unterstützung für logische Ansichtsreferenzen befindet sich in der Vorschau. Weitere Informationen finden Sie unter Logische Ansichten referenzieren.
Einschränkungen von materialisierten Ansichten über BigLake-Tabellen
- Die Partitionierung der materialisierten Ansicht wird nicht unterstützt. Die Basistabellen können die Hive-Partitionierung verwenden, der Speicher der materialisierten Ansicht kann jedoch nicht in BigLake-Tabellen partitioniert werden. Dies bedeutet, dass jeder Löschvorgang in einer Basistabelle eine vollständige Aktualisierung der materialisierten Ansicht verursacht. Weitere Informationen finden Sie unter Inkrementelle Aktualisierungen.
- Der Optionswert
-max_staleness
der materialisierten Ansicht muss größer sein als der Wert der BigLake-Basistabelle. - Joins zwischen von BigQuery verwalteten Tabellen und BigLake-Tabellen werden in der Definition einer einzigen materialisierten Ansicht nicht unterstützt.
- BigQuery BI Engine unterstützt keine Beschleunigung von materialisierten Ansichten für BigLake-Tabellen.
Preise für materialisierte Ansichten
Kosten fallen im Zusammenhang mit den folgenden Aspekten von materialisierten Ansichten an:
- Abfragen von materialisierten Ansichten.
- Pflegen von materialisierten Ansichten, z. B. wann materialisierte Ansichten aktualisiert werden. Die Kosten für die automatische Aktualisierung werden dem Projekt in Rechnung gestellt, in dem sich die Ansicht befindet. Die Kosten für die manuelle Aktualisierung werden dem Projekt in Rechnung gestellt, in dem der manuelle Aktualisierungsjob ausgeführt wird. Weitere Informationen zur Kostenkontrolle für Wartungen finden Sie unter Jobwartung aktualisieren.
- Speichern von Tabellen materialisierter Ansichten.
Komponente | On-Demand-Preise | Kapazitätsbasierte Preise |
---|---|---|
Abfragen | Byte, die von materialisierten Ansichten verarbeitet werden, und alle erforderlichen Teile der Basistabellen.1 | Slots werden während der Abfrage verbraucht. |
Wartung | Während der Aktualisierung verarbeitete Byte. | Slots werden während der Aktualisierung benötigt. |
Speicher | In materialisierten Ansichten gespeicherte Byte. | In materialisierten Ansichten gespeicherte Byte. |
1 Nach Möglichkeit liest BigQuery nur die Änderungen seit der letzten Aktualisierung der Ansicht. Weitere Informationen finden Sie unter Inkrementelle Aktualisierungen.
Details zu den Speicherkosten
Bei aggregierten Werten des Typs AVG
, ARRAY_AGG
und APPROX_COUNT_DISTINCT
in einer materialisierten Ansicht wird der endgültige Wert nicht direkt gespeichert. BigQuery speichert stattdessen intern eine materialisierte Ansicht als Zwischenskizze. Diese wird verwendet, um den endgültigen Wert zu generieren.
Sehen Sie sich als Beispiel eine materialisierte Ansicht an, die mit dem folgenden Befehl erstellt wurde:
CREATE MATERIALIZED VIEW project-id.my_dataset.my_mv_table AS SELECT date, AVG(net_paid) AS avg_paid FROM project-id.my_dataset.my_base_table GROUP BY date
Während die Spalte avg_paid
für den Nutzer als NUMERIC
oder FLOAT64
gerendert wird, wird sie intern als BYTES
gespeichert. Der Inhalt ist dabei eine Zwischenskizze in einem proprietären Format. Für die Berechnung der Datengröße wird die Spalte als BYTES
behandelt.
Nächste Schritte
- Materialisierte Ansichten erstellen
- Materialisierte Ansichten verwenden
- Materialisierte Ansichten verwalten