Die Zielverzögerung dynamischer Tabellen verstehen¶
Die Aktualisierung dynamischer Tabellen wird durch die Zielverzögerung der Daten ausgelöst, die bestimmt, wie veraltet die Daten sein dürfen. Sie können eine feste Zielverzögerung festlegen oder die dynamische Tabelle auf DOWNSTREAM setzen, sodass ihre Aktualisierungszeit von anderen dynamischen Tabellen abhängt, die von ihr abhängig sind.
Die Zielverzögerung für eine dynamische Tabelle wird relativ zu den dynamischen Tabellen an der Wurzel des Diagramms gemessen, nicht zu den direkt vorgelagerten dynamischen Tabellen. Das Diagramm der Tabellen, die mit Ihrer dynamischen Tabelle verbunden sind, finden Sie unter Diagramm der Tabellen anzeigen, die mit Ihren dynamischen Tabellen verbunden sind.
Snowflake plant die Aktualisierungen so, dass die tatsächliche Verzögerung Ihrer dynamischen Tabellen unter der Zielverzögerung bleibt. Die Dauer der einzelnen Aktualisierungen hängt von der Abfrage, dem Datenmuster und der Warehouse-Größe ab. Berücksichtigen Sie bei der Wahl der Zielverzögerung die Zeit, die benötigt wird, um jede dynamische Tabelle in einer Kette bis zur Root zu aktualisieren. Wenn Sie dies nicht tun, werden möglicherweise einige Aktualisierungen übersprungen, was zu einer höheren tatsächlichen Verzögerung führt.
Bemerkung
Eine Zielverzögerung ist keine Garantie. Stattdessen ist es ein Ziel, das Snowflake zu erreichen versucht. Die Daten in dynamischen Tabellen werden innerhalb der Zielverzögerung so genau wie möglich aktualisiert. Die Zielverzögerung kann jedoch aufgrund von Faktoren wie der Größe des Warehouses, des Datenumfangs, der Komplexität der Abfrage und ähnlichen Faktoren überschritten werden.
Arten von Zielverzögerung¶
Die Zielverzögerung wird auf eine der folgenden Arten angegeben. Die Zielverzögerung ist umgekehrt proportional zur Aktualisierungshäufigkeit der dynamischen Tabelle: häufige Aktualisierungen bedeuten eine geringere Verzögerung.
Measure der Aktualität: Definiert die maximale Zeitspanne, die der Inhalt der dynamischen Tabelle hinter den Aktualisierungen der Basistabellen zurückbleiben darf.
Im folgenden Beispiel wird
my_dynamic_table
so eingestellt, dass sie jede Stunde aktualisiert wird und ihre Aktualität behält:ALTER DYNAMIC TABLE my_dynamic_table SET TARGET_LAG = '1 hour';Nachgelagert: Gibt an, dass die dynamische Tabelle bei Bedarf aktualisiert werden soll, wenn andere abhängige dynamische Tabellen aktualisiert werden. Diese Aktualisierung kann durch Initialisierung bei der Erstellung, manuelle Aktualisierung oder geplante Aktualisierung einer nachgelagerten dynamischen Tabelle ausgelöst werden.
Im folgenden Beispiel wird
my_dynamic_table
so eingestellt, dass die Aktualisierung auf der Grundlage der Zielverzögerung der nachgelagerten dynamischen Tabellen erfolgt. Wennmy_dynamic_table
keine dynamischen Tabellen hat, die von ihr abhängig sind, wird sie nicht aktualisiert.ALTER DYNAMIC TABLE my_dynamic_table SET TARGET_LAG = DOWNSTREAM;
Optimale Zielverzögerung einer dynamischen Tabelle bestimmen¶
Die von Ihnen festgelegte Zielverzögerung beeinflusst die Häufigkeit der geplanten Aktualisierungen Ihrer dynamischen Tabelle.
Snowflake plant Aktualisierungen etwas früher, um Zeit für den Abschluss der Aktualisierung zu haben. Wenn Sie z. B. die Zielverzögerung auf 5 Minuten einstellen, bedeutet das nicht, dass die Tabelle genau alle 5 Minuten aktualisiert wird. Die tatsächlichen Aktualisierungsintervalle können kürzer sein als die angegebene Verzögerung. Wenn Sie konsistentere 5-Minuten-Aktualisierungen wünschen, sollten Sie eine leichte Erhöhung der Zielverzögerung in Betracht ziehen.
Sie können entweder die Tabellenfunktion DYNAMIC_TABLE_REFRESH_HISTORY in INFORMATION_SCHEMA oder Snowsight verwenden, um die optimale Zielverzögerungszeit für Ihre Anforderungen zu bestimmen. Analysieren Sie zum Beispiel die Aktualisierungsdetails, einschließlich Dauer und übersprungenen Aktualisierungen, um eine fundierte Entscheidung zu treffen.
Informationen zur Überwachung der Aktualisierung dynamischer Tabellen und zur Problembehandlung finden Sie unter Dynamische Tabellen überwachen und Diagnose häufiger Probleme bei der Automatisierung dynamischer Tabellen.
Die Funktion DYNAMIC_TABLE_REFRESH_HISTORY gibt Informationen über jede Aktualisierung einer dynamischen Tabelle zurück, einschließlich der Zeit, die für die Aktualisierung benötigt wurde, und welche Aktualisierungen übersprungen wurden.
SELECT
name
FROM
TABLE (
INFORMATION_SCHEMA.DYNAMIC_TABLE_REFRESH_HISTORY (
NAME_PREFIX => 'MYDB.MYSCHEMA.', ERROR_ONLY => TRUE
)
);
Die Ausgabe spiegelt die Aktualisierungen im Laufe der Zeit wider. Jede Zeile steht für eine Aktualisierung. Jedes Mal, wenn die dynamische Tabelle aktualisiert wird, wird eine neue Zeile hinzugefügt.
Melden Sie sich bei Snowsight an.
Wählen Sie in der Navigation Monitoring » Dynamic Tables, und wählen Sie dann die Registerkarte Refresh History.
Prüfen Sie unter Lag Metrics die maximale Verzögerungszeit. Diese Kennzahl basiert auf der tatsächlichen Verzögerungszeit bei jeder Aktualisierung.
Zielverzögerung ändern¶
Möglicherweise möchten Sie die Zielverzögerung für eine dynamische Tabelle aus einem der folgenden Gründe anpassen:
Sie benötigen aktuellere Daten. Durch die Verringerung der Zielverzögerung wird sichergestellt, dass die dynamische Tabelle häufiger aktualisiert wird, sodass aktuellere Daten nahezu in Echtzeit bereitgestellt werden.
Sie möchten Ihre Ressourcen optimieren. Eine Erhöhung der Zielverzögerung kann die Häufigkeit der Aktualisierungen verringern und damit Computeressourcen einsparen, was für Workloads nützlich ist, die keine ständigen Aktualisierungen benötigen oder bei denen sich die Daten nur selten ändern. Wenn zum Beispiel eine dynamische Tabelle alle 20 Minuten aktualisiert wird, aber nur innerhalb einer Stunde mit den Quelltabellen übereinstimmen muss, kann die Festlegung einer einstündigen Zielverzögerung die Kosten senken.
Sie möchten, dass die Zielverzögerung mit der Datenpipeline übereinstimmt. Wenn Ihre dynamische Tabelle von anderen Tabellen abhängt, die längere Aktualisierungsintervalle haben, stellt die Anpassung der Zielverzögerung sicher, dass sie mit den Abhängigkeiten übereinstimmt.
Um die Zielverzögerung zu ändern, verwenden Sie den Befehl ALTER DYNAMIC TABLE. Weitere Informationen dazu finden Sie unter Warehouse oder der Zielverzögerungszeit für dynamische Tabellen ändern.
Einfluss von vor- und nachgelagerten Beziehungen auf die Zielverzögerung¶
Die folgende Abbildung illustriert die Operationen für das Anhalten, Fortsetzen und manuelle Aktualisieren im Kontext der vor- und nachgelagerten Beziehungen zu anderen dynamischen Tabellen.

Die Abbildung zeigt eine einfache deklarative Datenpipeline, die mit dynamischen Tabellen aufgebaut ist:
DT2
wird als nachgelagert vonDT1
beschrieben, da sie von dieser dynamischen Tabelle abhängt, und als vorgelagert vonDT3
, die von ihr abhängig ist.DT3
befindet sich stromabwärts, also nachgelagert vonDT2
als auch vonDT1
, da sie direkt vonDT2
und indirekt vonDT1
abhängt.DT1
befindet sich stromaufwärts gegenüber den anderen dynamischen Tabellen, ist ihnen also direkt oder indirekt vorgelagert.
Beispiel: Zielverzögerung für dynamische Tabellenketten¶
Betrachten Sie das folgende Beispiel, bei dem eine dynamische Tabelle (DT2
) aus einer anderen dynamischen Tabelle (DT1
) liest, um ihren Inhalt zu materialisieren. In diesem Szenario verarbeitet ein Bericht die Daten von DT2
über eine Abfrage.

Die folgenden Ergebnisse sind möglich, je nachdem, wie jede dynamische Tabelle ihre Verzögerung angibt:
|
|
Ergebnisse der Aktualisierung |
---|---|---|
|
|
|
|
|
Dieses Szenario sollte vermieden werden. Die Berichtsabfrage wird keine Daten erhalten. DT1 wird häufig aktualisiert und |
|
|
|
|
|
Weder |