Best Practices zur Optimierung der Leistung dynamischer Tabellen¶
Um die Leistung Ihrer dynamischen Tabellen zu optimieren, sollten Sie das System verstehen, mit Ideen experimentieren und auf der Grundlage der Ergebnisse iterieren. Beispiel:
Entwickeln Sie Möglichkeiten zur Verbesserung Ihrer Datenpipeline auf der Grundlage Ihrer Anforderungen an Kosten, Datenverzögerung und Antwortzeiten.
Führen Sie die folgenden Aktionen durch:
Beginnen Sie mit einem kleinen, festen Datenset, um schnell Abfragen zu entwickeln.
Testen Sie die Leistung mit in Bewegung befindlichen Daten.
Skalieren Sie das Datenset, um zu überprüfen, ob es Ihren Anforderungen entspricht.
Passen Sie Ihren Workload auf der Grundlage der Ergebnisse an.
Wiederholen Sie den Vorgang nach Bedarf und priorisieren Sie dabei die Aufgaben mit den größten Auswirkungen auf die Leistung.
Nutzen Sie außerdem die nachgelagerte Verzögerung, um die Abhängigkeiten zwischen den Tabellen effizient zu verwalten und sicherzustellen, dass Aktualisierungen nur bei Bedarf durchgeführt werden.
Bemerkung
Bei Abfragen verhalten sich dynamische Tabellen ähnlich wie normale Snowflake-Tabellen. Weitere Informationen dazu finden Sie unter Optimieren der Performance in Snowflake.
Leistung der vollständigen Aktualisierung¶
Die Leistung von dynamischen Tabellen mit vollständiger Aktualisierung ist ähnlich der von CREATE TABLE … AS SELECT (auch al CTAS bezeichnet). Solche Tabellen können wie jede andere Snowflake-Abfrage optimiert werden.
Leistung der inkrementellen Aktualisierung¶
So erreichen Sie eine optimale Leistung bei der inkrementellen Aktualisierung Ihrer dynamischen Tabellen:
Halten Sie die Änderungen zwischen den Aktualisierungen minimal, idealerweise weniger als 5 % des gesamten Datensets, sowohl bezüglich der Quellen als auch der dynamischen Tabelle.
Berücksichtigen Sie die Anzahl der geänderten Mikropartitionen, nicht nur die Anzahl der Zeilen. Der Arbeitsaufwand für eine inkrementelle Aktualisierung verhält sich proportional zur Größe dieser Mikropartitionen und nicht nur zu den Zeilen, die geändert wurden.
Minimieren Sie Gruppierungsoperationen wie Joins, GROUP BYs und PARTITION BYs in Ihrer Abfrage. Zerlegen Sie große Common Table Expressions (CTEs) in kleinere Teile, und erstellen Sie für jeden eine dynamische Tabelle. Vermeiden Sie es, eine einzelne dynamische Tabelle mit übermäßigen Aggregationen oder Joins zu überfrachten.
Stellen Sie die Datenlokalität sicher, indem Sie Tabellenänderungen mit Abfrageschlüsseln abgleichen (z. B. für Joins, GROUP BYs, PARTITION BYs). Wenn Ihre Tabellen nicht von Natur aus nach diesen Schlüsseln geclustert sind, sollten Sie Automatic Clustering aktivieren.