Amazon Redshift wird UDFs ab dem 1. November 2025 die Erstellung von neuem Python nicht mehr unterstützen. Wenn Sie Python verwenden möchten UDFs, erstellen Sie das UDFs vor diesem Datum liegende. Bestehendes Python UDFs wird weiterhin wie gewohnt funktionieren. Weitere Informationen finden Sie im Blogbeitrag
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.
Aktualisieren einer materialisierten Ansicht
In diesem Thema wird beschrieben, wie die Daten in einer Materialansicht anhand der zugrunde liegenden Tabellen aktualisiert werden.
Wenn Sie eine materialisierte Ansicht erstellen, spiegelt ihr Inhalt den Status der zugrunde liegenden Datenbankbeziehungen (Tabellen oder andere materialisierte Ansichten) zu diesem Zeitpunkt wider. Die Daten in der materialisierten Ansicht bleiben unverändert, auch wenn Anwendungen die Daten in den zugrundeliegenden Tabellen ändern. Um die Daten in der materialisierten Ansicht manuell zu aktualisieren, können Sie jederzeit die Anweisung REFRESH MATERIALIZED VIEW
verwenden. Wenn Sie diese Anweisung verwenden, identifiziert Amazon Redshift Änderungen, die in den Basisbeziehungen stattgefunden haben, und wendet diese Änderungen auf die materialisierte Ansicht an.
Amazon Redshift besitzt zwei Strategien zum Aktualisieren einer materialisierten Ansicht:
-
In vielen Fällen kann Amazon Redshift eine inkrementelle Aktualisierung durchführen. Bei einer inkrementellen Aktualisierung identifiziert Amazon Redshift schnell die Änderungen an den Daten in den Basisbeziehungen seit der letzten Aktualisierung und aktualisiert die Daten in der materialisierten Ansicht. Die inkrementelle Aktualisierung wird für die folgenden SQL-Konstrukte unterstützt, die in der Abfrage beim Definieren der materialisierten Ansicht verwendet werden:
-
Konstrukte mit den Klauseln SELECT, FROM, [INNER] JOIN, WHERE, GROUP BY oder HAVING.
-
Konstrukte mit Aggregationen, wie SUM, MIN, MAX, AVG und COUNT.
-
Die meisten integrierten SQL-Funktionen, insbesondere diejenigen, die unveränderlich sind, erzeugen bei den gleichen Eingabeargumenten immer die gleiche Ausgabe.
Die inkrementelle Aktualisierung wird auch für eine materialisierte Ansicht unterstützt, die auf einer Datashare-Tabelle basiert.
-
-
Wenn eine inkrementelle Aktualisierung nicht möglich ist, führt Amazon Redshift eine vollständige Aktualisierung durch. Eine Vollständige Aktualisierung führt die zugrundeliegende SQL-Anweisung erneut aus und ersetzt alle Daten in der materialisierten Ansicht.
-
Amazon Redshift wählt automatisch die Aktualisierungsmethode für eine materialisierte Ansicht, abhängig von der SELECT-Abfrage, die zur Definition der materialisierten Ansicht verwendet wurde.
Verschachtelte materialisierte Ansichten
Eine materialisierte Ansicht kann zusätzlich zu anderen materialisierten Ansichten definiert werden. Um eine solche materialisierte Ansicht zu aktualisieren, müssen Sie das CASCADE
Schlüsselwort bei der Aktualisierung der obersten materialisierten Ansicht explizit verwenden. Gehen Sie beispielsweise von der folgenden verschachtelten Struktur der materialisierten Ansicht aus:
CREATE TABLE t(a INT); CREATE MATERIALIZED VIEW u AS SELECT * FROM t; CREATE MATERIALIZED VIEW v AS SELECT * FROM u; CREATE MATERIALIZED VIEW w AS SELECT * FROM v; -- w -> v -> u -> t INSERT INTO t VALUES (1);
Um eine vollständig auf den neuesten Stand zu bringen, haben Sie zwei Möglichkeiten:
-
(Empfohlen) Aktualisieren Sie w mit
REFRESH MATERIALIZED VIEW w CASCADE
dem Befehl. Dieser Befehl führt die Aktualisierung aller materialisierten Ansichten in einer einzigen Transaktion aus. -
Aktualisieren Sie u, v und w als separate Befehle in der Reihenfolge der Abhängigkeiten (zuerst u, dann v, dann w).
Wenn das CASCADE
Schlüsselwort nicht explizit verwendet wird, wird die materialisierte Ansicht im RESTRICT
Modus aktualisiert, wobei nur die aktuelle materialisierte Ansicht aktualisiert wird. Die folgenden Beispiele zeigen eine Informationsmeldung, wenn Sie eine materialisierte Ansicht ausführenREFRESH MATERIALIZED VIEW
, die von einer materialisierten Ansicht abhängt. out-of-date
REFRESH MATERIALIZED VIEW w; INFO: Materialized view w is already up to date. However, it depends on another materialized view that is not up to date. REFRESH MATERIALIZED VIEW w CASCADE; INFO: Materialized view w was incrementally updated successfully.
REFRESH MATERIALIZED VIEW v; INFO: Materialized view v is already up to date. However, it depends on another materialized view that is not up to date. REFRESH MATERIALIZED VIEW v CASCADE; INFO: Materialized view v was incrementally updated successfully.
In den obigen Beispielen mit der Option „Cascade Refresh“ wird die materialisierte Ansicht u zuerst aktualisiert, die materialisierte Ansicht v wird als nächstes aktualisiert und die materialisierte Ansicht w wird nicht aktualisiert.
Das folgende Beispiel zeigt, wie Sie programmatisch einen Plan für eine vollständige Aktualisierung einer materialisierten Ansicht erstellen können. Um die materialisierte Ansicht v zu aktualisieren, aktualisieren Sie zuerst die materialisierte Ansicht u. Um die materialisierte Ansicht w zu aktualisieren, aktualisieren Sie zuerst die materialisierte Ansicht u und dann die materialisierte Ansicht v.
WITH RECURSIVE recursive_deps (mv_tgt, lvl, mv_dep) AS ( SELECT trim(name) as mv_tgt, 0 as lvl, trim(ref_name) as mv_dep FROM stv_mv_deps UNION ALL SELECT R.mv_tgt, R.lvl+1 as lvl, trim(S.ref_name) as mv_dep FROM stv_mv_deps S, recursive_deps R WHERE R.mv_dep = S.name ) SELECT mv_tgt, mv_dep from recursive_deps ORDER BY mv_tgt, lvl DESC; mv_tgt | mv_dep --------+-------- v | u w | u w | v (3 rows)
Einschränkungen
Amazon Redshift unterstützt keine kaskadierende Aktualisierung für materialisierte Ansichten, die auf anderen Quellen basieren als:
-
Lokale Tabellen
-
Lokal MVs
-
Streamen MVs
Amazon Redshift unterstützt derzeit keine inkrementelle Aktualisierung für materialisierte Ansichten, die mit einer Abfrage mit den folgenden SQL-Elementen definiert sind:
-
OUTER JOIN (RIGHT, LEFT oder FULL).
-
Die Set-Operationen UNION, INTERSECT, EXCEPT und MINUS.
-
Die Aggregatfunktionen MEDIAN, PERCENTILE_CONT, LISTAGG, STDDEV_SAMP, STDDEV_POP, APPROXIMATE COUNT, APPROXIMATE PERCENTILE sowie bitweise Aggregatfunktionen.
Anmerkung
Die Aggregatfunktionen COUNT, SUM 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 in anderen als den oben aufgeführten Formaten definiert wurden. Weitere Informationen finden Sie unter Materialisierte Ansichten externer Data-Lake-Tabellen in Amazon Redshift Spectrum.
-
Automatisches Aktualisieren einer materialisierten Ansicht
Amazon Redshift kann materialisierte Ansichten automatisch mit up-to-date Daten aus seinen Basistabellen aktualisieren, wenn materialisierte Ansichten mit der Option Autorefresh erstellt oder geändert werden. Die automatische Aktualisierung durch Amazon Redshift erfolgt nach Änderungen an den Basistabellen so schnell wie möglich.
Um die Aktualisierung der wichtigsten materialisierten Ansichten mit minimalen Auswirkungen auf aktive Workloads in Ihrem Cluster abzuschließen, berücksichtigt Amazon Redshift mehrere Faktoren. Zu diesen Faktoren zählen die aktuelle Systemlast, die für die Aktualisierung erforderlichen Ressourcen, die verfügbaren Clusterressourcen und die Häufigkeit der Verwendung der materialisierten Ansichten.
Amazon Redshift priorisiert Ihre Workloads gegenüber der automatischen Aktualisierung und stoppt möglicherweise die automatische Aktualisierung, um die Leistung des Benutzer-Workloads aufrechtzuerhalten. Dieser Ansatz kann die Aktualisierung einiger materialisierter Ansichten verzögern. In einigen Fällen ist möglicherweise ein deterministisches Aktualisierungsverhalten für Ihre materialisierten Ansichten erforderlich. Wenn dies der Fall ist, sollten Sie die manuelle Aktualisierung verwenden, wie unter REFRESH MATERIALIZED VIEW beschrieben, oder die geplante Aktualisierung mithilfe der Amazon-Redshift Scheduler-API-Vorgänge oder der Konsole.
Sie können die automatische Aktualisierung für materialisierte Ansichten mit CREATE MATERIALIZED VIEW festlegen. Sie können außerdem die AUTO-REFRESH-Klausel verwenden, um materialisierte Ansichten automatisch zu aktualisieren. Weitere Hinweise zur Erstellung von materialisierten Ansichten finden Sie unter CREATE MATERIALIZED VIEW. Sie können die automatische Aktualisierung für eine aktuelle materialisierte Ansicht aktivieren, indem Sie verwenden ALTER MATERIALIZED VIEW.
Beachten Sie Folgendes, wenn Sie materialisierte Ansichten aktualisieren:
Sie können eine materialisierte Ansicht weiterhin explizit mit dem Befehl REFRESH MATERIALIZED VIEW aktualisieren, auch wenn Sie die automatische Aktualisierung für die materialisierte Ansicht nicht aktiviert haben.
Amazon Redshift wird in materialisierten Ansichten unterstützt, die in Datasharing-Tabellen und Iceberg-Tabellen definiert sind.
Für den Aktualisierungsstatus können Sie SVL_MV_REFRESH_STATUS überprüfen, was Abfragen aufzeichnet, die vom Benutzer initiiert oder automatisch aktualisiert wurden.
Um REFRESH für ausschließlich neu berechnete materialisierte Ansichten auszuführen, benötigen Sie die CREATE-Berechtigung für Schemata. Weitere Informationen finden Sie unter GRANT.