Amazon Redshift unterstützt ab dem 1. November 2025 nicht mehr die Erstellung neuer Python-UDFs. Wenn Sie Python-UDFs verwenden möchten, erstellen Sie die UDFs vor diesem Datum. Bestehende Python-UDFs funktionieren weiterhin wie gewohnt. Weitere Informationen finden Sie im Blog-Posting
REFRESH MATERIALIZED VIEW
Aktualisiert eine materialisierte Ansicht.
Wenn Sie eine materialisierte Ansicht erstellen, spiegelt ihr Inhalt den Zustand der zugrundeliegenden Datenbanktabelle(n) zu diesem Zeitpunkt wider. Die Daten in der materialisierten Ansicht bleiben unverändert, auch wenn Anwendungen Änderungen an den Daten in den zugrundeliegenden Tabellen vornehmen.
Um die Daten in einer materialisierten Ansicht zu aktualisieren, können Sie jederzeit die Anweisung REFRESH MATERIALIZED
VIEW verwenden. Wenn Sie diese Anweisung verwenden, identifiziert Amazon Redshift Änderungen, die in der oder den Basistabellen stattgefunden haben, und wendet diese Änderungen dann auf die materialisierte Ansicht an.
Weitere Hinweise zu materialisierten Ansichten finden Sie unter Materialisierte Ansichten in Amazon Redshift.
Syntax
REFRESH MATERIALIZED VIEW mv_name [ RESTRICT | CASCADE ]
Parameter
- mv_name
-
Der Name der zu aktualisierenden materialisierten Ansicht.
- RESTRICT
-
Optionales Schlüsselwort. Aktualisiert die angegebene materialisierte Ansicht, nicht jedoch ihre abhängigen materialisierten Ansichten. Die Standardeinstellung, wenn weder RESTRICT noch CASCADE angegeben sind.
- CASCADE
-
Optionales Schlüsselwort. Aktualisiert die angegebene materialisierte Ansicht und alle materialisierten Ansichten, die von ihr abhängig sind.
Nutzungshinweise
Nur der Besitzer einer materialisierten Ansicht kann eine REFRESH MATERIALIZED
VIEW-Operation für diese Ansicht ausführen. Darüber hinaus muss der Besitzer über SELECT-Berechtigungen für die zugrunde liegenden Basistabellen verfügen, um erfolgreich ausführen zu können REFRESH
MATERIALIZED VIEW.
Der Befehl REFRESH MATERIALIZED VIEW wird als Transaktion von sich selbst ausgeführt. Die Amazon-Redshift-Transaktionssemantik wird befolgt, um zu bestimmen, welche Daten aus Basistabellen für den Befehl REFRESH sichtbar sind oder wann die durch den Befehl REFRESH vorgenommenen Änderungen für andere Transaktionen sichtbar gemacht werden, die in Amazon Redshift ausgeführt werden.
-
Für inkrementelle materialisierte Ansichten verwendet
REFRESH MATERIALIZED VIEWnur die Zeilen der Basistabelle, die bereits festgeschrieben wurden. Wenn der Aktualisierungsvorgang nach einer DML-Anweisung (Data Manipulation Language) in derselben Transaktion ausgeführt wird, sind Änderungen dieser DML-Anweisung nicht sichtbar, um zu aktualisieren. -
Für eine vollständige Aktualisierung einer materialisierten Ansicht zeigt
REFRESH MATERIALIZED VIEWalle Basistabellenzeilen an, die für die Aktualisierungstransaktion sichtbar sind, entsprechend der üblichen Amazon-Redshift-Transaktionssemantik. -
Abhängig vom Eingabeargumenttyp unterstützt Amazon Redshift weiterhin die inkrementelle Aktualisierung für materialisierte Ansichten für die folgenden Funktionen mit bestimmten Eingabeargumenttypen: DATE (Zeitstempel), DATE_PART (Datum, Uhrzeit, Intervall, Zeitzone), DATE_TRUNC (Zeitstempel, Intervall).
-
Die inkrementelle Aktualisierung wird auch für eine materialisierte Ansicht unterstützt, bei der sich die Basistabelle in einem Datashare befindet.
Einige Operationen in Amazon Redshift interagieren mit materialisierten Ansichten. Einige dieser Vorgänge erzwingen möglicherweise einen Vorgang vom Typ REFRESH MATERIALIZED VIEW, um die materialisierte Ansicht vollständig neu zu berechnen, auch wenn die Abfrage, die die materialisierte Ansicht definiert, nur die SQL-Features verwendet, die sich für eine inkrementelle Aktualisierung eignen. Beispiel:
-
Im Hintergrund ausgeführte Bereinigungsoperationen können blockiert werden, wenn materialisierte Ansichten nicht aktualisiert werden. Nach einem intern definierten Zeitraum kann eine Bereinigungsoperation ausgeführt werden. Bei dieser Bereinigungsoperation werden alle abhängigen materialisierten Ansichten bei der nächsten Aktualisierung zur Neuberechnung markiert (auch wenn sie inkrementell sind). Weitere Informationen zu VACUUM finden Sie unter VACUUM. Weitere Hinweise zu Ereignissen und Statusänderungen finden Sie unter STL_MV_STATE.
-
Einige vom Benutzer initiierte Operationen für Basistabellen zwingen eine materialisierte Ansicht dazu, bei der nächsten Ausführung einer REFRESH-Operation vollständig neu berechnet zu werden. Beispiele für solche Operationen sind eine manuell aufgerufene VACUUM-Operation, eine klassische Größenänderung, eine ALTER DISTKEY-Operation, eine ALTER SORTKEY-Operation und eine Operation zum Kürzen. Automatische Operationen können in einigen Fällen auch dazu führen, dass eine materialisierte Ansicht bei der nächsten Ausführung einer REFRESH-Operation vollständig neu berechnet wird. Beispielsweise kann ein die Löschoperation auto-vacuum zu einer vollständigen Neuberechnung führen. Weitere Hinweise zu Ereignissen und Statusänderungen finden Sie unter STL_MV_STATE.
Kaskadierende Aktualisierung
Die Option CASCADE aktualisiert die angegebene materialisierte Ansicht und alle materialisierten Ansichten, die von ihr abhängig sind, in der Reihenfolge der Abhängigkeit: MVs am unteren Ende werden vor MVs am oberen Ende aktualisiert (topologische Reihenfolge). Auf diese Weise können Sie einen verschachtelten Satz von materialisierten Ansichten mit einem einzigen Befehl aktualisieren.
Die Option RESTRICT (die Standardoption, wenn weder RESTRICT noch CASCADE angegeben sind) aktualisiert nur die angegebene materialisierte Ansicht.
Bei Verwendung der Option CASCADE gelten die folgenden Regeln:
-
Nur der Besitzer der materialisierten Ansicht oder ein Superuser können den Befehl
REFRESH MATERIALIZED VIEW ... CASCADEausführen. -
Wenn eine der materialisierten Ansichten in der Kaskade nicht aktualisiert werden kann, wird die gesamte CASCADE-Operation beendet.
Die kaskadierende Aktualisierungsfunktion wird nur für MVs unterstützt, die auf lokalen und gestreamten materialisierten Ansichten verschachtelt sind. Materialisierte Ansichten mit anderen Quelltypen, wie Spectrum oder Data Sharing, werden im Kaskadenmodus nicht unterstützt. CASCADE führt die Aktualisierung in einer einzigen Transaktion für alle verschachtelten MVs aus.
Inkrementelle Aktualisierung für materialisierte Ansichten in einem Datashare
Amazon Redshift unterstützt die automatische und inkrementelle Aktualisierung für materialisierte Ansichten in einem Consumer-Datashare, wenn die Basistabellen geteilt werden. Die inkrementelle Aktualisierung ist ein Vorgang, bei dem Amazon Redshift Änderungen in der Basistabelle oder in Tabellen identifiziert, die nach der vorherigen Aktualisierung ausgeführt wurden, und nur die entsprechenden Datensätze in der materialisierten Ansicht aktualisiert. Weitere Informationen zu diesem Verhalten finden Sie unter CREATE MATERIALIZED VIEW.
Einschränkungen für die inkrementelle Aktualisierung
Amazon Redshift unterstützt derzeit keine inkrementelle Aktualisierung für materialisierte Ansichten, die mit einer Abfrage mit einem der folgenden SQL-Elemente definiert sind:
-
OUTER JOIN (RIGHT, LEFT oder FULL).
-
Set-Operationen: UNION, INTERSECT, EXCEPT, MINUS.
-
UNION ALL, wenn sie in einer Unterabfrage enthalten ist und eine Aggregatfunktion oder die Klausel GROUP BY in der Abfrage vorhanden ist oder wenn die materialisierte Zielansicht einen Sortierschlüssel enthält.
-
Aggregatfunktionen: MEDIAN, PERCENTILE_CONT, LISTAGG, STDDEV_SAMP, STDDEV_POP, APPROXIMATE COUNT, APPROXIMATE PERCENTILE sowie bitweise Aggregatfunktionen.
Anmerkung
Die Aggregatfunktionen COUNT, SUM, MIN, MAX und AVG werden unterstützt.
-
DISTINCT-Aggregatfunktionen, wie DISTINCT COUNT, DISTINCT SUM usw.
-
Fensterfunktionen.
-
Eine Abfrage, die temporäre Tabellen für die Abfrageoptimierung verwendet, z. B. das Optimieren allgemeiner Unterausdrücke.
-
Unterabfragen
-
Externe Tabellen, die in der Abfrage, die die materialisierte Ansicht definiert, auf die folgenden Formate verweisen.
-
Delta Lake
-
Hudi
Die inkrementelle Aktualisierung wird für materialisierte Ansichten unterstützt, die mit anderen als den oben aufgeführten Formaten definiert wurden. Weitere Informationen finden Sie unter Materialisierte Ansichten für externe Data-Lake-Tabellen in Amazon Redshift Spectrum.
-
-
Veränderbare Funktionen, wie Datum-Uhrzeit-Funktionen, RANDOM und nicht-STABLE benutzerdefinierte Funktionen.
-
Einschränkungen in Bezug auf die inkrementelle Aktualisierung von Null-ETL-Integrationen finden Sie unter Überlegungen zur Verwendung von Null-ETL-Integrationen mit Amazon Redshift.
-
Zugreifen auf Tabellen aus mehr als einer Datenbank.
Weitere Informationen zu Einschränkungen bei materialisierten Ansichten, einschließlich der Auswirkungen von Hintergrundoperationen wie VACUUM auf Aktualisierungsvorgänge in materialisierten Ansichten, finden Sie unter Nutzungshinweise.
Beispiele
Das folgende Beispiel aktualisiert die materialisierte tickets_mv-Ansicht.
REFRESH MATERIALIZED VIEW tickets_mv;
Im folgenden Beispiel werden die materialisierte Ansicht products_mv und alle materialisierten Ansichten, die von ihr abhängig sind, aktualisiert:
REFRESH MATERIALIZED VIEW products_mv CASCADE;