Warum wird meine materialisierte Ansicht für meinen Amazon-Redshift-Cluster nicht aktualisiert?

Letzte Aktualisierung: 26.10.2022

Meine materialisierte Ansicht für meinen Amazon-Redshift-Cluster wird nicht aktualisiert. Warum passiert das und wie kann ich meine materialisierte Ansicht auffrischen?

Kurzbeschreibung

Die folgenden Szenarien können dazu führen, dass eine materialisierte Ansicht in Amazon Redshift nicht aktualisiert wird oder die Fertigstellung sehr lange dauert:

  • REFRESH MATERIALIZED VIEW schlägt mit Berechtigungsfehler fehl
  • Sie sehen den Fehler: Ungültiger Vorgang: Die materialisierte Ansicht mv_name konnte nicht aktualisiert werden, da sich eine Basistabelle aufgrund von Vacuum/Truncate gleichzeitig physisch geändert hat. Bitte versuchen Sie es noch einmal;
  • REFRESH MATERIALIZED VIEW ist nicht aktualisierbar
  • REFRESH MATERIALIZED VIEW wurde übertragen und lief lange Zeit
  • Aktualisierungsaktivität wird bei einer automatischen Aktualisierung aufgrund eines aktiven Workloads nicht angezeigt

Auflösung

REFRESH MATERIALIZED VIEW schlägt mit Berechtigungsfehler fehl

Sie müssen der Besitzer sein, um einen REFRESH-MATERIALIZED-VIEW-Vorgang für eine materialisierte Ansicht ausführen zu können. Außerdem müssen Sie über die folgenden Berechtigungen verfügen:

  • SELECT-Privileg für die zugrunde liegenden Basistabellen
  • USAGE-Berechtigung für das Schema

Wenn es sich bei der materialisierten Ansicht um eine vollständige Neuberechnung anstelle einer inkrementellen Aktualisierung handelt, müssen Sie auch über das CREATE-Privileg für das Schema verfügen. Um Berechtigungen zu definieren, siehe GRANT. Weitere Informationen finden Sie unter Automatisches Aktualisieren einer materialisierten Ansicht.

Ungültiger Vorgang: Die materialisierte Ansicht mv_name konnte nicht aktualisiert werden, da eine Basistabelle aufgrund von vakuum/truncate gleichzeitig physisch geändert wurde. Bitte versuchen Sie es noch einmal;

Der Fehler tritt auf, wenn REFRESH MATERIALIZED VIEW und VACUUM zur gleichzeitigen Ausführung in der Basistabelle übergeben werden. Nach Abschluss des Vorgangs kann die REFRESH MATERIALIZED VIEW erneut übermittelt werden.

REFRESH MATERIALIZED VIEW ist nicht aktualisierbar

Nicht aktualisierbare materialisierte Ansichten können durch folgende Vorgänge verursacht werden:

  • Umbenennung oder Löschung einer Spalte.
  • Änderung des Typs einer Spalte.
  • Änderung des Namens einer Basistabelle oder eines Schemas

Hinweis: Materialisierte Ansichten in dieser Bedingung können abgefragt, aber nicht aktualisiert werden. Die vorhergehenden Einschränkungen gelten auch dann, wenn die Spalte in der materialisierten Ansicht nicht verwendet wird.

Um festzustellen, ob die Daten in der materialisierten Ansicht veraltet sind, und um Informationen über den Zustand der materialisierten Ansicht zu erhalten, verwenden Sie STV_MV_INFO. Um die Aktualisierungsaktivität der materialisierten Ansicht anzuzeigen, verwenden Sie SVL_MV_REFRESH_STATUS. In diesem nicht aktualisierbaren Zustand der materialisierten Ansicht müssen Sie die materialisierte Ansicht löschen und neu erstellen, um die materialisierte Ansicht auf dem neuesten Stand zu halten.

Im Folgenden finden Sie Beispiel-Fehlermeldungen, die möglicherweise angezeigt werden:

```Detail: Procedure <mv_sp_*****_2_1>  does not exist```
```column <column name> does not exist```
```DETAIL:  schema "<schema name>" does not exist ;```
```ERROR: Materialized view <mv namme> is unrefreshable as a base table was renamed.```

REFRESH MATERIALIZED VIEW wurde übertragen und lief lange Zeit

REFRESH MATERIALIZED VIEW funktioniert wie eine normale Abfrage, die auf Ihrem Cluster ausgeführt wird. Gehen Sie wie folgt vor, um zu bestätigen, dass die Abfrage ausgeführt wird:

  • Verwenden Sie STV_INFLIGHT, um die aktiven Abfragen anzuzeigen, die auf den Daten ausgeführt werden.
  • Verwenden Sie STV_WLM_QUERY_STATE, um den aktuellen Status von Abfragen aufzuzeichnen, die vom Workload-Management (WLM) verfolgt werden.
  • Um Informationen zu Abfragen und Abfrageschritten zu erhalten, die aktiv auf Rechenknoten ausgeführt werden, verwenden Sie STV_EXEC_STATE.

Die Leistung des Vorgangs REFRESH MATERIALIZEDVIEW ist von folgenden Faktoren abhängig:

  • Tabellensperren: Informationen zu aktuellen Aktualisierungen von Tabellen in der Datenbank finden Sie unter STV_LOCKS.
  • Zugeteilte Ressourcen: Informationen zur Anzeige der Serviceklassenkonfiguration für WLM finden Sie unter STV_WLM_SERVICE_CLASS_CONFIG.
  • Art der Aktualisierung: Inkrementelle oder vollständige Aktualisierung. Informationen zum Typ der Aktualisierung, der die materialisierte Ansicht unterzogen wurde, finden Sie unter SVL_MV_REFRESH_STATUS.

Wenn Sie eine langsame Leistung von REFRESH MATERIALIZED VIEW feststellen, siehe Verbessern der Abfrageleistung.

Aktualisierungsaktivität wird bei einer automatischen Aktualisierung aufgrund eines aktiven Workloads nicht angezeigt

Amazon Redshift priorisiert Ihre Workloads über die automatische Aktualisierung. Diese Priorisierung stoppt möglicherweise die automatische Aktualisierung, um die Leistung Ihrer Workloads zu erhalten, und kann die Aktualisierung einiger materialisierter Ansichten verzögern. In einigen Fällen benötigen Ihre materialisierten Ansichten möglicherweise ein deterministischeres Aktualisierungsverhalten. Verwenden Sie Folgendes, um mehr deterministischeres Aktualisierungsverhalten zu erzeugen:

  • Manuelles Aktualisieren wie in REFRESH MATERIALIZED VIEW
  • Geplante Aktualisierung mithilfe der API-Vorgänge von Amazon Redshift Scheduler oder der Konsole

Weitere Informationen finden Sie unter Automatisches Aktualisieren einer materialisierten Ansicht.


War dieser Artikel hilfreich?


Benötigen Sie Hilfe zur Fakturierung oder technischen Support?