Überwachen der Leistung dynamischer Tabellen¶
Die Leistungsüberwachung hilft Ihnen bei den folgenden Aufgaben:
Identifizieren von langsamen oder kostspieligen Aktualisierungen dynamischer Tabellen.
Diagnose von Engpässen.
Messen der Auswirkungen von Optimierungen.
Unter diesem Thema wird erklärt, was Sie bei der Überwachung der Leistung dynamischer Tabellen beachten müssen und wie Sie Probleme diagnostizieren können. Informationen zu Überwachungstools finden Sie unter Dynamische Tabellen überwachen.
Tipp
Ein praktisches Beispiel finden Sie unter Tutorial: Optimieren der Leistung dynamischer Tabellen für SCD-Workloads vom Typ 1.
Wichtige Leistungsindikatoren¶
Um die Leistung dynamischer Tabellen zu überwachen, konzentrieren Sie sich auf die in diesem Abschnitt beschriebenen Kennzahlen.
Dauer der Aktualisierung¶
Die Aktualisierungsdauer misst, wie lange es dauert, eine Aktualisierung abzuschließen. Um Leistungseinbußen zu erkennen, verfolgen Sie die Aktualisierungsdauer im Lauf der Zeit.
Warnzeichen:
Die Dauer erhöht sich im Laufe der Zeit: Wachsende Datenmengen oder sich verschlechternde Datenlokalität kann dazu führen, dass sich die Aktualisierungsdauer stetig erhöht.
Die Dauer nähert sich der Zielverzögerung: Wenn Aktualisierungen fast so lange dauern wie die festgelegte Zielverzögerung, erfüllen Sie möglicherweise nicht die Anforderungen an die Datenaktualität.
Hohe Varianz der Dauer: Große Schwankungen bei der Aktualisierungsdauer können auf Workloadspitzen oder Ressourcenkonflikte hinweisen.
Informationen zum Anzeigen der Aktualisierungsdauer finden Sie unter Aktualisierungsstatus für Ihre dynamischen Tabellen überwachen.
Verzögerungskennzahlen¶
Verzögerungskennzahlen zeigen, wie gut die dynamische Tabelle ihr Aktualitätsziel erreicht. Informationen darüber, wie die Zielverzögerung funktioniert, finden Sie unter Die Zielverzögerung dynamischer Tabellen verstehen.
Wichtige Kennzahlen:
Tatsächliche Verzögerung: Die Zeit zwischen der Änderung der Quelldaten und dem Zeitpunkt, an dem die dynamische Tabelle diese Änderungen widerspiegelt.
Zeit innerhalb des Zielverzögerungsverhältnisses: Prozentsatz der Zeit, die eine Tabelle innerhalb ihrer Zielverzögerung bleibt. Ein Verhältnis niedriger als 1 bedeutet, dass die Pipeline ihr Aktualitätsziel nicht erreicht.
Maximale Verzögerung: Die längste tatsächliche Verzögerung während eines bestimmten Zeitraums.
Informationen zur Anzeige von Verzögerungskennzahlen finden Sie unter Aktualisierungsstatus für Ihre dynamischen Tabellen überwachen.
Partitionsstatistiken¶
Bei inkrementellen Aktualisierungen sollte die Anzahl der gescannten Partitionen proportional zu den geänderten Daten sein, und nicht zur Gesamttabellengröße. Eine hohe Zahl von Partitionsscans deutet auf eine schlechte Datenlokalität hin.
Warnzeichen:
Scannen eines großen Prozentsatzes der gesamten Partitionen während der inkrementellen Aktualisierung.
Partitionsscans, die im Laufe der Zeit zugenommen haben, ohne dass dies dem Datenwachstum entspricht.
Informationen zum Anzeigen von Partitionsstatistiken finden Sie unter Analysieren Sie Abfrage-Profile.
Hinweise zur Verbesserung der Datenlokalität finden Sie unter Verbessern der Datenlokalität.
Aktualisierungsmodus¶
Der Aktualisierungsmodus wirkt sich direkt auf die Leistung aus. Überprüfen Sie, ob Ihre dynamische Tabelle den erwarteten Modus verwendet.
Um den Aktualisierungsmodus zu überprüfen, verwenden Sie SHOW DYNAMIC TABLES und überprüfen Sie die Spalten refresh_mode und refresh_mode_reason. Sehen Sie sich in Snowsight den Aktualisierungsmodus im Objektheader an.
Hinweise zur Auswahl des passenden Aktualisierungsmodus finden Sie unter Auswählen eines Aktualisierungsmodus.
Diagnose langsamer Aktualisierungen¶
Wenn Aktualisierungen länger dauern als erwartet, führen Sie folgende Schritte aus, um die Ursache zu ermitteln:
Prüfen Sie den Aktualisierungsverlauf auf Trends bei der Aktualisierungsdauer, wie z. B. schrittweise Erhöhungen oder plötzliche Spitzen (Aktualisierungsstatus für Ihre dynamischen Tabellen überwachen).
Überprüfen Sie das Abfrageprofil, um Engpässen zu erkennen (Analysieren Sie Abfrage-Profile):
Eine hohe Zahl von Partitionsscans deutet auf eine schlechte Datenlokalität hin.
Übergelaufene Byte deuten darauf hin, dass das Warehouse zu klein ist.
Bestimmte Operatoren, die viel Zeit benötigen, könnten auf eine Möglichkeit hinweisen, die :ref:` Abfrage dynamischer Tabellen zu optimieren <label-dt-optimize-query>`.
Prüfen Sie, ob die Verzögerung Ihr Ziel konstant überschreitet, was darauf hinweist, dass die Aktualisierungen möglicherweise nicht mit Ihrem Datenvolumen Schritt halten (Aktualisierungsstatus für Ihre dynamischen Tabellen überwachen).
Überprüfen Sie die vorgelagerten (Upstream-)Abhängigkeiten, um festzustellen, ob vorgelagerte Tabellen Verzögerungen verursachen oder große Änderungsmengen erzeugen.
Suchen Sie in der Graph-Ansicht in Snowsight nach den folgenden Bedingungen:
Vorgelagerte Tabellen, die eine Aktualisierung ausführen (dargestellt mit
executing-Status).Fehlgeschlagene oder angehaltene vorgelagerte Tabellen.
Aktualisieren von vorgelagerten Tabellen dauert länger als üblich.
Informationen zum Zugreifen auf die Graph-Ansicht finden Sie unter Diagramm der Tabellen anzeigen, die mit Ihren dynamischen Tabellen verbunden sind.
Überprüfen Sie das Volumen der Änderungen, die die dynamische Tabelle verarbeitet, da große Mengen von Änderungen aus vorgelagerten (Upstream-)Abhängigkeiten Aktualisierungen verlangsamen können.
Verwenden Sie die Funktion DYNAMIC_TABLE_REFRESH_HISTORY, um zu sehen, wie viele Zeilen sich in den letzten Aktualisierungen geändert haben:
SELECT name, data_timestamp, statistics:numInsertedRows::INT AS rows_inserted, statistics:numDeletedRows::INT AS rows_deleted, refresh_action FROM TABLE(INFORMATION_SCHEMA.DYNAMIC_TABLE_REFRESH_HISTORY( NAME => 'my_dynamic_table' )) ORDER BY data_timestamp DESC LIMIT 10;
Wenn das Änderungsvolumen im Verhältnis zur Gesamttabellengröße hoch ist (mehr als fünf Prozent der Tabellenzeilen), sollten Sie stattdessen den Modus der vollständigen Aktualisierung verwenden.
Gängige Muster und empfohlene Maßnahmen¶
Die Aktualisierungsdauer ist stabil, aber die Verzögerung ist hoch: Ihre Zielverzögerung ist wahrscheinlich zu agressiv für die aktuelle Warehouse-Größe und das Datenvolumen. Aktualisierungen werden erfolgreich abgeschlossen, können aber mit den eingehenden Änderungen nicht Schritt halten. Prüfen Sie, ob Ihre Zielverzögerung und die Warehouse-Ressourcen zum Datenvolumen passen.
Die Aktualisierungsdauer erreicht plötzliche Spitzen und die Anzahl übergelaufener Byte ist hoch: Das Warehouse hat nicht genug Speicher, um die Aktualisierung zu verarbeiten, entweder weil das Warehouse zu klein ist oder weil andere Abfragen gleichzeitig ausgeführt werden. Erhöhen Sie die Warehouse-Größe oder verschieben Sie Aktualisierungen dynamischer Tabellen in ein dediziertes Warehouse.
Partitionsscans nehmen mit der Zeit zu, aber das Datenvolumen bleibt gleich: Ihre Datenlokalität ist schlecht, wodurch Snowflake dazu gezwungen ist, mehr Partitionen als nötig zu scannen. Überprüfen Sie Ihre Gruppierungsschlüssel und Datenlokalität. Prüfen Sie auch, ob sich vorgelagerte Änderungen auf viele verstreute Partitionen auswirken, statt auf einige zusammenhängende Partitionen.
Bei jeder Aktualisierung wird ein großer Teil der Tabelle verarbeitet (mehr als fünf Prozent der Zeilen oder Partitionen): Eine inkrementelle Aktualisierung bietet wenig Vorteil, wenn sich der größte Teil der Tabelle häufig ändert. Wechseln Sie in den Modus der vollständigen Aktualisierung oder entwerfen Sie Ihre Pipeline neu, um die Datenmenge zu reduzieren, die sich bei jeder Aktualisierung ändert.
Wenden Sie auf der Grundlage Ihrer Erkenntnisse entsprechende Korrekturen an, die in Optimieren der Leistung dynamischer Tabellen aufgeführt sind.
Bemerkung
Übersprungene oder fehlgeschlagene Aktualisierungen werden in der Regel durch Konfigurationsprobleme und nicht durch Leistungsprobleme verursacht. Siehe Troubleshooting skipped or failed dynamic table refreshes.
Analysieren Sie Abfrage-Profile¶
Das Abfrageprofil zeigt detaillierte Ausführungsstatistiken für jede Aktualisierung an. Wenn eine Aktualisierung langsam ist, hilft Ihnen das Abfrageprofil dabei, Optimierungsmöglichkeiten zu erkennen.
So greifen Sie auf das Abfrageprofil zu:
Navigieren Sie zu Transformation » Dynamic Tables.
Wählen Sie Ihre dynamische Tabelle aus, und gehen Sie zur Registerkarte Refresh History.
Wählen Sie Show query profile neben der Aktualisierung aus, die Sie analysieren möchten.
Rufen Sie zuerst die Abfrage-ID aus dem Aktualisierungsverlauf ab:
SELECT
name,
refresh_start_time,
query_id
FROM TABLE(INFORMATION_SCHEMA.DYNAMIC_TABLE_REFRESH_HISTORY(
NAME => 'my_dynamic_table'
))
WHERE state = 'SUCCEEDED'
ORDER BY refresh_start_time DESC
LIMIT 5;
Analysieren Sie dann das Abfrageprofil mit der Funktion GET_QUERY_OPERATOR_STATS:
SELECT *
FROM TABLE(GET_QUERY_OPERATOR_STATS('<query_id>'));
Wonach Sie Ausschau halten sollten¶
Gescannte Partitionen im Vgl. zu bereinigten Partitionen: Wenn die Partitionsscans im Verhältnis zur Gesamtzahl der Partitionen sehr hoch sind, ist die Ursache in der Regel eine schlecht Datenlokalität oder fehlendes Clustering.
Zeitverteilung: Prüfen Sie, welche Operatoren die meiste Zeit verbrauchen. Operatoren, die unverhältnismäßig lange dauern, könnten auf eine Möglichkeit hinweisen, Ihre Abfrage zu optimieren. Unter Optimieren von Abfragen für inkrementelle Aktualisierungen finden Sie spezifische Hinweise für Operatoren.
Byte, die in den lokalen oder Remotespeicher übergelaufen sind: Ein hoher Überlauf von Byte weist häufig darauf hin, dass das Warehouse zu klein für den Aktualisierungsworkload ist oder dass andere Abfragen, die in demselben Warehouse ausgeführt werden, den für Aktualisierungen verfügbaren Speicher reduzieren. Ziehen Sie in Betracht, die Warehouse-Größe zu erhöhen oder Aktualisierungen dynamischer Tabellen in einem speziellen Warehouse auszuführen, um Konflikte zu reduzieren.
Weitere Hinweise zum Beheben von Problemen im Abfrageprofil finden Sie unter Optimieren der Leistung dynamischer Tabellen.
Warehouse-Nutzung überwachen¶
Um zu prüfen, ob Ihr Warehouse den Workload der dynamischen Tabellen bewältigen kann, und um Möglichkeiten zur Kostenreduzierung zu finden, überwachen Sie die Warehouse-Nutzung.
Wichtige Kennzahlen, die überwacht werden sollen¶
Übergelaufene Byte: Wenn Byte in den lokalen oder Remotespeicher überlaufen, ist das Warehouse möglicherweise zu klein. Ziehen Sie in Betracht, die Warehouse-Größe zu erhöhen. Weitere Informationen zum Identifizieren und zur Problembehandlung von übergelaufenen Byte finden Sie unter Ermitteln der Abfragen, die in den Speicher überlaufen.
Warehouse-Nutzung: Prüfen Sie, ob das Warehouse über genügend Ressourcen für Aktualisierungsworkloads verfügt. Eine niedrige Auslastung bedeutet, dass Sie möglicherweise ein zu großes Warehouse haben. Eine lange Warteschlangendauer bedeutet, dass Ihr Warehouse zu klein ist oder zu viele gleichzeitige Abfragen ausführt.
Abfragewarteschlange: In die Warteschlange gestellte Abfragen verzögern die Aktualisierungen. Wenn Aktualisierungen häufig in der Warteschlange stehen, erhöhen Sie die Warehouse-Größe, verwenden Sie ein dediziertes Warehouse für die Aktualisierung dynamischer Tabellen, oder verwenden Sie ein Multi-Cluster-Warehouse, um variable Workloads zu bewältigen.
Credit-Nutzung: Verfolgen Sie Credits, um Leistung und Kosten auszugleichen. Überwachen Sie regelmäßig, um die passende Größe von Warehouses zu finden oder die Aktualisierungszeitpläne anzupassen.
Informationen zur Nutzung der Warehouses und zu den Warteschlangenzeiten finden Sie unter Reduzieren von Warteschlangen. Optimieren Sie die Warehouse-Konfiguration für dynamische Tabellen mit Optimieren der Leistung dynamischer Tabellen.
Abhängigkeiten überwachen¶
Abhängigkeiten zwischen dynamischen Tabellen können sich auf die Leistung auswirken. Leistungsprobleme in vorgelagerten Tabellen wirken sich kaskadenartig auf nachgelagerte Tabellen aus, da eine nachgelagerte Tabelle warten muss, bis die Aktualisierungen der vorgelagerten Tabellen abgeschlossen sind, bevor sie ihre eigene Aktualisierung starten kann.
Informationen zur Diagnose von Leistungsproblemen im Zusammenhang mit vorgelagerten (Upstream-)Abhängigkeiten finden Sie unter Diagnose langsamer Aktualisierungen.
Das Diagramm der Abhängigkeiten finden Sie unter Diagramm der Tabellen anzeigen, die mit Ihren dynamischen Tabellen verbunden sind.
Alerts für Leistungsprobleme einrichten¶
Sie können Alerts einrichten, damit Sie benachrichtigt werden, wenn sich die Performance verschlechtert. Wir empfehlen, Alerts für die folgenden Bedingungen zu erstellen:
Die Aktualisierungsdauer überschreitet einen Schwellenwert.
Die Verzögerung verfehlt immer wieder ihr Ziel.
Alerts verwenden Ereignistabellen, um Aktualisierungsereignisse zu verfolgen. Eine Anleitung zur Einrichtung finden Sie unter Überwachung von Ereignistabellen und Warnmeldungen für dynamische Tabellen.