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 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 automatisierte und manuelle Cluster-Snapshots aufgenommen werden soll.
Geben Sie für materialisierte Ansichten, die keine kritischen Daten enthalten, BACKUP NEIN an, um beim Erstellen von Snapshots und beim Wiederherstellen von Snapshots Verarbeitungszeit zu sparen und den Speicherplatz auf Amazon Simple Storage Service zu reduzieren. Die Einstellung BACKUP NEIN hat keine Auswirkung auf die automatische Replikation von Daten auf andere Knoten innerhalb des Clusters. Daher werden materialisierte Ansichten ohne Angabe von BACKUP NO wiederhergestellt, falls ein Knoten ausfällt. Die Standardeinstellung ist BACKUPYES.
- 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 VerteilungsstilEVEN
. 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 Schlüssel sortieren.
-
- 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 bestimmte 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, dass die materialisierte Ansicht eine vollständige Aktualisierung verwendet. Die Meldung kann je nach Client-Anwendung angezeigt werden oder auch nicht. SQL Ü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:
-
CREATERechte für ein Schema.
-
SELECTRechte 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. Dies 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.
DDLAktualisierungen materialisierter Ansichten oder Basistabellen
Wenn Sie materialisierte Ansichten in Amazon Redshift verwenden, befolgen Sie diese Nutzungshinweise für Aktualisierungen der Datendefinitionssprache (DDL) für materialisierte 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 (ihre Aussage) nicht ändern. SQL
-
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, OFFSET OR-Klausel.
-
Late-Binding-Referenzen auf Basistabellen. Mit anderen Worten, alle Basistabellen oder verwandten Spalten, auf die in der definierenden SQL Abfrage der materialisierten Ansicht verwiesen wird, müssen existieren und gültig sein.
-
Funktionen, die nur für Leader-Knoten verfügbar sind: CURRENT CURRENT _ SCHEMASCHEMAS, HAS _ DATABASE _PRIVILEGE, HAS _ _PRIVILEGE, SCHEMA HAS _. TABLE PRIVILEGE
Sie können die AUTO REFRESH YES Option nicht verwenden, wenn die Definition der materialisierten Ansicht veränderbare Funktionen oder externe Schemas 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;
Das folgende Beispiel erstellt eine materialisierte Ansicht, die dem vorherigen Beispiel ähnelt, und verwendet die Aggregatfunktion MAX ().
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;
Das folgende Beispiel verwendet eine UNION ALL Klausel, um die Amazon Redshift public_sales
Redshift-Tabelle und die Redshift spectrum.sales
Spectrum-Tabelle zu verbinden, um eine Materialansicht zu erstellen. mv_sales_vw
Informationen zum CREATE EXTERNAL TABLE Befehl für Amazon Redshift Spectrum finden Sie unterCREATE 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 die Definition der materialisierten Ansicht eingegeben wird, und gibt außerdem a an. AUTO REFRESH DISTSTYLE 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 darüber, ob diese AUTO REFRESH Option 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. Weisen Sie dem Datentyp der Spalte einen VARCHAR Wert zu. 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 werden nur dann aus der Quelltabelle 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.
Einzelheiten zur Materialized View-Übersicht und zu SQL Befehlen, die zum Aktualisieren und Löschen von Materialized Views verwendet werden, finden Sie in den folgenden Themen: