CREATE MATERIALIZED VIEW - Amazon Redshift

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

CREATE MATERIALIZED VIEW

Erstellt eine materialisierte Ansicht, die auf einer oder mehreren Amazon-Redshift-Tabellen basiert. Sie können materialisierte Ansichten auch auf externe Tabellen basieren, die mit Spectrum oder einer Verbundabfrage erstellt wurden. Weitere Informationen zu Spectrum finden Sie unter Abfrage externer Daten mit Amazon Redshift Spectrum. Weitere Informationen zur Verbundabfrage finden Sie unter Abfragen von Daten mit Verbundabfragen in Amazon Redshift.

Syntax

CREATE MATERIALIZED VIEW mv_name
[ BACKUP { YES | NO } ]
[ table_attributes ]
[ AUTO REFRESH { YES | NO } ]
AS query 

Parameter

BACKUP

Eine Klausel, die angibt, ob die materialisierte Ansicht in automatisierten und manuellen Cluster-Snapshots enthalten ist, die in Amazon S3 gespeichert werden.

Der Standardwert für den BACKUP beträgt YES.

Sie können BACKUP NO angeben, um Verarbeitungszeit bei der Erstellung von Snapshots und der Wiederherstellung aus Snapshots zu sparen und den Speicherbedarf in Amazon S3 zu reduzieren.

Anmerkung

Die Einstellung BACKUP NO hat keinen Einfluss auf die automatische Replikation von Daten auf andere Knoten innerhalb des Clusters, sodass bei einem Knotenfehler Tabellen mit der Angabe BACKUP NO wiederhergestellt werden.

table_attribute

Eine Klausel, die angibt, wie die Daten in der materialisierten Ansicht verteilt werden, einschließlich der folgenden:

  • Der Verteilungsstil für die materialisierte Ansicht im Format DISTSTYLE { EVEN | ALL | KEY }. Wenn Sie diese Klausel weglassen, ist der Verteilungsstil EVEN. Weitere Informationen finden Sie unter Verteilungsstile.

  • Der Verteilungsschlüssel für die materialisierte Ansicht im Format DISTKEY ( distkey_identifier ). Weitere Informationen finden Sie unter Bezeichnen von Verteilungsstilen.

  • Der Sortierschlüssel für die materialisierte Ansicht im Format SORTKEY ( column_name [, ...] ). Weitere Informationen finden Sie unter Arbeiten mit Sortierschlüsseln.

AS query

Eine gültige SELECT-Anweisung, die die materialisierte Ansicht und ihren Inhalt definiert. Die Ergebnismenge aus der Abfrage definiert die Spalten und Zeilen der materialisierten Ansicht. Hinweise zu Einschränkungen beim Erstellen materialisierter Ansichten finden Sie unter Einschränkungen.

Darüber hinaus bestimmen einige SQL-Sprachkonstrukte, die in der Abfrage verwendet werden, ob die materialisierte Ansicht inkrementell oder vollständig aktualisiert werden kann. Hinweise zur Refresh-Methode finden Sie unter REFRESH MATERIALIZED VIEW. Hinweise zu den Einschränkungen für die inkrementelle Aktualisierung finden Sie unter Einschränkungen für die inkrementelle Aktualisierung.

Wenn die Abfrage einen SQL-Befehl enthält, der keine inkrementelle Aktualisierung unterstützt, zeigt Amazon Redshift eine Meldung an, die angibt, dass die materialisierte Ansicht eine vollständige Aktualisierung verwendet. Je nach SQL-Clientanwendung kann die Meldung angezeigt werden oder nicht. Überprüfen Sie die state-Spalte von STV_MV_INFO, um den Aktualisierungstyp anzuzeigen, der von einer materialisierten Ansicht verwendet wird.

AUTO REFRESH

Eine Klausel, die definiert, ob die materialisierte Ansicht automatisch mit den neuesten Änderungen aus ihren Basistabellen aktualisiert werden soll. Der Standardwert ist NO. Weitere Informationen finden Sie unter Aktualisieren einer materialisierten Ansicht.

Nutzungshinweise

Um eine materialisierte Ansicht zu erstellen, müssen Sie über die folgenden Berechtigungen verfügen:

  • CREATE-Berechtigungen für ein Schema.

  • SELECT-Berechtigung auf Tabellen- oder Spaltenebene für die Basistabellen zum Erstellen einer materialisierten Ansicht. Wenn Sie über Berechtigungen auf Spaltenebene für bestimmte Spalten verfügen, können Sie nur für diese Spalten eine materialisierte Ansicht erstellen.

Inkrementelle Aktualisierung für materialisierte Ansichten in einem Datashare

Amazon Redshift unterstützt automatische und inkrementelle Aktualisierungen für materialisierte Ansichten in einem Consumer-Datashare, wenn die Basistabellen gemeinsam genutzt werden. Inkrementelle Aktualisierung ist ein Vorgang, bei dem Amazon Redshift Änderungen in der Basistabelle oder den Basistabellen identifiziert, die nach der vorherigen Aktualisierung vorgenommen wurden, und nur die entsprechenden Datensätze in der materialisierten Ansicht aktualisiert. Dieser Vorgang läuft schneller als eine vollständige Aktualisierung und verbessert die Workload-Leistung. Sie müssen Ihre Materialized-View-Definition nicht ändern, um die Vorteile der inkrementellen Aktualisierung nutzen zu können.

Bei der Nutzung der inkrementellen Aktualisierung mit einer materialisierten Ansicht sind einige Einschränkungen zu beachten:

  • Die materialisierte Ansicht darf nur auf eine Datenbank verweisen, entweder lokal oder remote.

  • Die inkrementelle Aktualisierung ist nur für neue materialisierte Ansichten verfügbar. Daher müssen Sie vorhandene materialisierte Ansichten löschen und neu erstellen, damit eine inkrementelle Aktualisierung erfolgt.

Weitere Informationen zum Erstellen materialisierter Ansichten in einem Datashare finden Sie unter Arbeiten mit Ansichten beim Amazon Redshift Redshift-Datenaustausch, der mehrere Abfragebeispiele enthält.

DDL-Aktualisierungen an materialisierten Ansichten oder Basistabellen

Wenn Sie materialisierte Ansichten in Amazon Redshift verwenden, folgen Sie diesen Verwendungshinweisen für DDL-Aktualisierungen (Data Definition Language) von materialisierten Ansichten oder Basistabellen.

  • Sie können Spalten zu einer Basistabelle hinzufügen, ohne dass sich dies auf materialisierte Ansichten auswirkt, die auf die Basistabelle verweisen.

  • Andere Operationen können die materialisierte Ansicht in einem Status belassen, der überhaupt nicht aktualisiert werden kann. Beispiele sind Operationen wie das Umbenennen oder Löschen einer Spalte, das Ändern des Spaltentyps und das Ändern des Schemanamens. Solche materialisierten Ansichten können abgefragt, aber nicht aktualisiert werden. In diesem Fall müssen Sie einen Drop für die materialisierte Ansicht durchführen und diese neu anlegen.

  • Im Allgemeinen können Sie die Definition einer materialisierten Ansicht (deren SQL-Anweisung) nicht ändern.

  • Sie können eine materialisierte Ansicht nicht umbenennen.

Einschränkungen

Sie können keine materialisierte Ansicht definieren, die Folgendes referenziert oder einschließt:

  • Standardansichten oder Systemtabellen und Ansichten.

  • Temporäre Tabellen.

  • Benutzerdefinierte Funktionen.

  • Die ORDER BY-, LIMIT- oder OFFSET-Klausel.

  • Late-Binding-Referenzen auf Basistabellen. Mit anderen Worten, alle Basistabellen oder zugehörigen Spalten, die in der definierenden SQL-Abfrage der materialisierten Ansicht referenziert werden, müssen existieren und gültig sein.

  • Auf den Führungsknoten beschränkte Funktionen: CURRENT_SCHEMA, CURRENT_SCHEMAS, HAS_DATABASE_PRIVILEGE, HAS_SCHEMA_PRIVILEGE, HAS_TABLE_PRIVILEGE.

  • Sie können die Option AUTO REFRESH YES nicht verwenden, wenn die Definition der materialisierten Ansicht veränderbare Funktionen oder externe Schemata enthält. Sie können sie auch nicht verwenden, wenn Sie eine materialisierte Ansicht in einer anderen materialisierten Ansicht definieren.

  • Sie müssen ANALYZE für materialisierte Ansichten nicht manuell ausführen. Dies geschieht derzeit nur über AUTO ANALYZE. Weitere Informationen finden Sie unter Analysieren von Tabellen.

Beispiele

Im folgenden Beispiel wird eine materialisierte Ansicht aus drei Basistabellen erstellt, die verbunden und aggregiert sind. Jede Zeile stellt eine Kategorie mit der Anzahl der verkauften Tickets dar. Wenn Sie die materialisierte Ansicht tickets_mv abfragen, greifen Sie direkt auf die vorberechneten Daten in der materialisierten Ansicht tickets_mv zu.

CREATE MATERIALIZED VIEW tickets_mv AS select catgroup, sum(qtysold) as sold from category c, event e, sales s where c.catid = e.catid and e.eventid = s.eventid group by catgroup;

Im folgenden Beispiel wird eine materialisierte Ansicht ähnlich dem vorherigen Beispiel erstellt und die Aggregationsfunktion MAX() verwendet.

CREATE MATERIALIZED VIEW tickets_mv_max AS select catgroup, max(qtysold) as sold from category c, event e, sales s where c.catid = e.catid and e.eventid = s.eventid group by catgroup; SELECT name, state FROM STV_MV_INFO;

Im folgenden Beispiel wird eine UNION ALL-Klausel verwendet, um die public_sales-Tabelle aus Amazon-Redshift und die spectrum.sales-Tabelle aus Redshift Spectrum zu verbinden, um die Materialansicht mv_sales_vw zu erstellen. Weitere Informationen zum Befehl CREATE EXTERNALE TABLE für Amazon Redshift Spectrum finden Sie unter CREATE EXTERNAL TABLE. Die externe Redshift-Spectrum-Tabelle verweist auf die Daten in Amazon S3.

CREATE MATERIALIZED VIEW mv_sales_vw as select salesid, qtysold, pricepaid, commission, saletime from public.sales union all select salesid, qtysold, pricepaid, commission, saletime from spectrum.sales

Im folgenden Beispiel wird die materialisierte Ansicht mv_fq erstellt, die auf einer externen Tabelle für eine Verbundabfrage basiert. Weitere Informationen zur Verbundabfrage finden Sie unter CREATE EXTERNAL SCHEMA.

CREATE MATERIALIZED VIEW mv_fq as select firstname, lastname from apg.mv_fq_example; select firstname, lastname from mv_fq; firstname | lastname -----------+---------- John | Day Jane | Doe (2 rows)

Das folgende Beispiel zeigt die Definition einer materialisierten Ansicht.

SELECT pg_catalog.pg_get_viewdef('mv_sales_vw'::regclass::oid, true); pg_get_viewdef --------------------------------------------------- create materialized view mv_sales_vw as select a from t;

Das folgende Beispiel zeigt, wie AUTO REFRESH in der Definition der materialisierten Ansicht festgelegt wird, und gibt außerdem einen DISTSTYLE an. Erstellen Sie zunächst eine einfache Basistabelle.

CREATE TABLE baseball_table (ball int, bat int);

Erstellen Sie dann eine materialisierte Ansicht.

CREATE MATERIALIZED VIEW mv_baseball DISTSTYLE ALL AUTO REFRESH YES AS SELECT ball AS baseball FROM baseball_table;

Jetzt können Sie die materialisierte Ansicht mv_baseball abfragen. Informationen zum Überprüfen, ob AUTO REFRESH für eine materialisierte Ansicht aktiviert ist, finden Sie unter STV_MV_INFO.

Im folgenden Beispiel wird eine materialisierte Ansicht erstellt, die auf eine Quelltabelle in einer anderen Datenbank verweist. Es wird davon ausgegangen, dass sich die Datenbank, die die Quelltabelle, database_A, enthält, in demselben Cluster oder derselben Arbeitsgruppe befindet wie Ihre materialisierte Ansicht, die Sie in database_B erstellen. (Sie können das Beispiel durch Ihre eigenen Datenbanken ersetzen.) Erstellen Sie zunächst in database_A eine Tabelle mit dem Namen cities mit einer Spalte cityname. Ändern Sie den Datentyp der Spalte in VARCHAR. Nachdem Sie die Quelltabelle erstellt haben, führen Sie den folgenden Befehl in database_B aus, um eine materialisierte Ansicht zu erstellen, deren Quelle Ihre Tabelle cities ist. Stellen Sie sicher, dass Sie die Datenbank und das Schema der Quelltabelle in der FROM-Klausel angeben:

CREATE MATERIALIZED VIEW cities_mv AS SELECT  cityname FROM    database_A.public.cities;

Fragen Sie die materialisierte Ansicht ab, die Sie erstellt haben. Die Abfrage ruft Datensätze ab, deren ursprüngliche Quelle die Tabelle cities in database_A ist:

select * from cities_mv;

Wenn Sie die SELECT-Anweisung ausführen, gibt cities_mv die Datensätze zurück. Datensätze aus der Quelltabelle werden nur dann aktualisiert, wenn eine REFRESH-Anweisung ausgeführt wird. Beachten Sie außerdem, dass Sie Datensätze nicht direkt in der materialisierten Ansicht aktualisieren können. Hinweise zum Aktualisieren der Daten in einer materialisierten Ansicht finden Sie unter REFRESH MATERIALIZED VIEW.

Weitere Details zur Übersicht über materialisierte Ansichten und SQL-Befehle, die zum Aktualisieren und Löschen materialisierter Ansichten verwendet werden, finden Sie in den folgenden Themen: