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

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:

  1. 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).

  2. Ü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>`.

  3. 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).

  4. Ü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.

  5. Ü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;
    
    Copy

    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.

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:

  1. Navigieren Sie zu Transformation » Dynamic Tables.

  2. Wählen Sie Ihre dynamische Tabelle aus, und gehen Sie zur Registerkarte Refresh History.

  3. Wählen Sie Show query profile neben der Aktualisierung aus, die Sie analysieren möchten.

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.