Fehlerbehebung bei übersprungenen oder fehlgeschlagenen Aktualisierungen dynamischer Tabellen¶
Unter diesem Thema finden Sie Informationen zur Problembehandlung bei übersprungenen oder fehlgeschlagenen Aktualisierungen. Informationen zur Diagnose einer langsamen Aktualisierung finden Sie unter Überwachen der Leistung dynamischer Tabellen.
Beachten Sie bei der Überwachung der Aktualisierungen Ihrer dynamischen Tabelle Folgendes:
Wenn Sie viele SKIPPED-Einträge sehen, siehe Übersprungene Aktualisierungen.
Wenn konsistente FAILED-Einträge angezeigt werden, siehe Fehlgeschlagene Aktualisierungen.
Wenn ein SCHEDULED- oder EXECUTING-Eintrag angezeigt wird, der für lange Zeit feststeckt, siehe Überwachen der Leistung dynamischer Tabellen.
Übersprungene Aktualisierungen¶
Dynamische Tabellen werden nach einem Zeitplan aktualisiert. Wenn eine geplante Aktualisierung beginnt, kann es in den folgenden Situationen dazu kommen, dass die Aktualisierung übersprungen wird:
Wenn der dynamischen Tabelle, die aktualisiert wird, eine andere dynamische Tabelle vorgelagert ist und die Aktualisierung für die vorgelagerte Tabelle fehlgeschlagen ist oder übersprungen wurde.
Wenn eine vorherige Aktualisierung für die dynamische Tabelle noch nicht abgeschlossen ist.
Wenn die Aktualisierung der dynamischen Tabelle oft länger dauert als die Zielverzögerung oder ein erheblicher Unterschied zwischen Zielverzögerung und tatsächlicher Verzögerung besteht, überspringt Snowflake möglicherweise eine Aktualisierung, um die Rate zukünftiger Auslassungen zu reduzieren.
Wenn beispielsweise eine dynamische Tabelle eine Zielverzögerung von 1 Minute hat, aber normalerweise 1 Stunde für die Aktualisierung benötigt, passt das System die „tatsächliche Verzögerung“ entsprechend an.
Informationen zur Verbesserung der Aktualisierungsleistung finden Sie unter Optimieren der Leistung dynamischer Tabellen.
Manuelle Aktualisierungen werden nie übersprungen, aber sie können dazu führen, dass andere geplante Aktualisierungen übersprungen werden, insbesondere wenn Sie häufige manuelle Aktualisierungen einer dynamischen Tabelle durchführen. Dies kann dazu führen, dass nachgelagerte dynamische Tabellen nicht mehr aktualisiert werden. Aus diesem Grund empfiehlt Snowflake, häufige manuelle Aktualisierungen einer dynamischen Tabelle mit nachgelagerten dynamischen Tabellen zu vermeiden, von denen erwartet wird, dass sie gemäß der Zielverzögerung aktualisiert werden.
Fehlgeschlagene Aktualisierungen¶
Aktualisierungsfehler werden in der Regel durch Probleme mit der Abfragedefinition der dynamischen Tabelle, durch Eingabedaten (z. B. Parsing-Fehler) oder durch Upstream-Fehler verursacht.
Fehlgeschlagene Aktualisierungen finden¶
Um fehlgeschlagene Aktualisierungen zu finden, fragen Sie den Aktualisierungsverlauf ab:
SELECT
name,
data_timestamp,
state,
state_code,
state_message
FROM TABLE(INFORMATION_SCHEMA.DYNAMIC_TABLE_REFRESH_HISTORY(
NAME_PREFIX => 'MY_DB.MY_SCHEMA',
ERROR_ONLY => TRUE
));
Sie können auch die Seite Refresh History in Snowsight verwenden, um fehlgeschlagene Aktualisierungen anzuzeigen. Die Spalte Source Data Timestamp zeigt den Zeitpunkt der letzten erfolgreichen Aktualisierung an. Eine fehlgeschlagene Aktualisierung erhöht diesen Wert nicht. Wenn dieser weit hinter der Zielverzögerung zurückbleibt, hängt Ihre dynamische Tabelle hinterher.
Fehlgeschlagene Aktualisierungen diagnostizieren¶
Verwenden Sie Query Profile für die Problembehandlung durch Auswahl von Show query profile neben jeder Aktualisierung. Dies zeigt den Ausführungsgraphen der Abfrage an.
Verwenden Sie die Graph-Ansicht in Snowsight, um Abhängigkeiten zu visualisieren. Eine ausgefallene oder angehaltene vorgelagerte dynamische Tabelle führt dazu, dass deren nachgelagerte Tabellen fehlschlagen. Weitere Informationen dazu finden Sie unter Diagramm der Tabellen anzeigen, die mit Ihren dynamischen Tabellen verbunden sind.
Ereignistabellen nach Fehlern abfragen¶
Sie können eine Ereignistabelle abfragen, um Aktualisierungsfehler in Ihren dynamischen Tabellen zu finden:
SELECT
timestamp,
resource_attributes:"snow.executable.name"::VARCHAR AS dt_name,
resource_attributes:"snow.query.id"::VARCHAR AS query_id,
value:message::VARCHAR AS error
FROM my_event_table
WHERE
resource_attributes:"snow.executable.type" = 'DYNAMIC_TABLE' AND
resource_attributes:"snow.database.name" = 'MY_DB' AND
value:state = 'FAILED'
ORDER BY timestamp DESC;
Weitere Informationen zur Konfiguration von Ereignistabellen und zur Einrichtung von Alerts finden Sie unter Überwachung von Ereignistabellen und Warnmeldungen für dynamische Tabellen.