Aktualisieren einer materialisierten Ansicht - 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.

Aktualisieren einer materialisierten 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 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 der oder den Basistabellen 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 kann Amazon Redshift Änderungen an den Daten in den Basistabellen seit der letzten Aktualisierung schnell identifizieren und die Daten in der materialisierten Ansicht aktualisieren. Die inkrementelle Aktualisierung wird für die folgenden SQL Konstrukte unterstützt, die in der Abfrage bei der Definition der materialisierten Ansicht verwendet wurden:

    • Konstrukte, die die KlauselnSELECT,, [INNER] FROMJOIN, WHERE BY oder enthalten. GROUP HAVING

    • Konstrukte, die Aggregationen enthalten, wie, SUMMIN, MAX und. AVG COUNT

    • Die meisten integrierten SQL Funktionen, insbesondere diejenigen, die unveränderlich sind, da sie dieselben Eingabeargumente haben und immer dieselbe Ausgabe erzeugen.

    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. Bei einer vollständigen Aktualisierung wird die zugrunde liegende SQL Anweisung erneut ausgeführt und alle Daten in der materialisierten Ansicht ersetzt.

  • 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.

Das Aktualisieren einer materialisierten Ansicht auf einer materialisierten Ansicht ist kein kaskadierender Prozess. Mit anderen Worten, nehmen Sie an, Sie haben eine materialisierte Ansicht A, die von der materialisierten Ansicht B abhängt. In diesem Fall wird REFRESH MATERIALIZED VIEW A mit der aktuellen Version von B aktualisiert, wenn A aufgerufen wird, auch wenn B aufgerufen wird. out-of-date Um A auf den neuesten Stand zu bringen, müssen Sie vor der Aktualisierung von A zunächst B aktualisieren.

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.

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; 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)

Das folgende Beispiel zeigt eine informative Meldung, wenn Sie eine materialisierte Ansicht REFRESH MATERIALIZED VIEW verwenden, die von einer materialisierten Ansicht abhängt. out-of-date

create table a(a int);
create materialized view b as select * from a;
create materialized view c as select * from b;
insert into a values (1);
refresh materialized view c; INFO: Materialized view c is already up to date. However, it depends on another materialized view that is not up to date.
REFRESH MATERIALIZED VIEW b; INFO: Materialized view b was incrementally updated successfully.
REFRESH MATERIALIZED VIEW c; INFO: Materialized view c was incrementally updated successfully.

Beim inkrementellen Aktualisieren von materialisierten Ansichten in Amazon Redshift gelten derzeit folgende Einschränkungen.

Amazon Redshift unterstützt keine inkrementelle Aktualisierung für materialisierte Ansichten, die mit einer Abfrage unter Verwendung der folgenden Elemente definiert wurden: SQL

  • OUTERJOIN(RIGHT,, oderLEFT). FULL

  • Die eingestellten Operationen UNIONINTERSECT,EXCEPT, undMINUS.

  • Die Aggregatfunktionen PERCENTILE _ MEDIANCONT,LISTAGG, STDDEV _SAMP, STDDEV _POP, APPROXIMATE COUNT APPROXIMATEPERCENTILE, und bitweise Aggregatfunktionen.

    Anmerkung

    Die AVG Aggregatfunktionen COUNTSUM, und werden unterstützt.

  • DISTINCTAggregatfunktionen wie DISTINCT COUNT DISTINCTSUM, und so weiter.

  • 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 im Vorschau-Track für materialisierte Ansichten unterstützt, die mit anderen als den oben aufgeführten Formaten definiert wurden. Weitere Informationen zum Einrichten von Vorschau-Clustern finden Sie unter Erstellen eines Vorschau-Clusters im Amazon-Redshift-Verwaltungshandbuch. Informationen zum Einrichten von Vorschau-Arbeitsgruppen finden Sie unter Erstellen einer Vorschau-Arbeitsgruppe im Amazon-Redshift-Verwaltungshandbuch.

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. In diesem Fall sollten Sie die manuelle Aktualisierung wie unter beschrieben REFRESH MATERIALIZED VIEW oder die geplante Aktualisierung mithilfe der Amazon Redshift API Redshift-Scheduler-Operationen oder der Konsole in Betracht ziehen.

Sie können die automatische Aktualisierung für materialisierte Ansichten mithilfe von einrichten. CREATE MATERIALIZED VIEW Sie können die AUTO REFRESH Klausel auch 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 immer noch explizit mithilfe eines REFRESH MATERIALIZED VIEW Befehls aktualisieren, auch wenn Sie die automatische Aktualisierung für die materialisierte Ansicht nicht aktiviert haben.

  • Amazon Redshift aktualisiert materialisierte Ansichten, die für externe Tabellen definiert sind, nicht automatisch.

  • Den Aktualisierungsstatus können Sie unter SVL _MV_ REFRESH _ überprüfen, das Abfragen aufzeichnetSTATUS, die vom Benutzer initiiert oder automatisch aktualisiert wurden.

  • Stellen Sie sicher, dass Sie REFRESH über die erforderlichen Berechtigungen für Schemas verfügen, um nur materialisierte Ansichten auszuführen, die nur neu berechnet werden können. CREATE Weitere Informationen finden Sie unter GRANT.