Hinweise zu Warehouses

Dieses Thema bietet allgemeine Richtlinien und bewährte Methoden für die Verwendung von virtuellen Warehouses in Snowflake zur Verarbeitung von Abfragen. Es liefert keine spezifischen oder absoluten Zahlen, Werte oder Empfehlungen, da jedes Abfrageszenario unterschiedlich ist und von zahlreichen Faktoren beeinflusst wird, darunter die Anzahl der gleichzeitigen Benutzer/Abfragen, die Anzahl der abgefragten Tabellen sowie die Menge und Zusammensetzung der Daten. Hinzu kommen Ihre spezifischen Anforderungen an Verfügbarkeit, Latenz und Kosten des Warehouse.

Weiterhin werden hier keine Warehouse-Hinweise zum Laden von Daten gegeben, da dies unter einem anderen Thema behandelt wird (siehe Seitenleiste).

Die entscheidenden Aspekte der effektiven und effizienten Nutzung von Warehouses sind:

  1. Experimentieren Sie mit verschiedenen Arten von Abfragen und unterschiedlichen Warehouse-Größen, um die Kombinationen zu ermitteln, die Ihren speziellen Abfrageanforderungen und Ihrem Workload am besten entsprechen.

  2. Konzentrieren Sie sich nicht allein auf die Warehouse-Größe. Snowflake verwendet eine sekundengenaue Abrechnung, sodass Sie größere Warehouses (Large, X-Large, 2X-Large usw.) ausführen und auch einfach anhalten können, wenn sie nicht mehr benötigt werden.

Bemerkung

Diese Richtlinien und Best Practices gelten sowohl für Einzelcluster-Warehouses, die Standard für alle Konten sind, als auch für Multi-Cluster-Warehouses, die in Snowflake Enterprise Edition (und höher) verfügbar sind.

Unter diesem Thema:

Wie werden Credit-Gebühren für Warehouses berechnet?

Credit-Gebühren werden auf folgender Grundlage berechnet:

  • Anzahl der Server pro Cluster (abhängig von der Warehouse-Größe)

  • Anzahl der Cluster (bei Verwendung von Multi-Cluster-Warehouses)

  • Zeitdauer, die jeder Server in jedem Cluster ausgeführt wird

Beispiel:

X-Small

Verwendet 1 Server pro Cluster und berechnet 1 Credit pro volle, durchgehende Stunde, die jeder Cluster ausführt. Jede nachfolgende Größe verdoppelt die Anzahl der Server pro Cluster.

4X-Large

Verwendet 128 Server pro Cluster und verrechnet 128 Credits pro volle, durchgehende Stunde, die jeder Cluster ausführt.

Beachten Sie Folgendes:

  • Jeder Server in einem Warehouse-Cluster bietet:

    • Einen internen Timer, der verfolgt, wann der Server gestartet wurde. Dieser interne Timer wird verwendet, um die Credits des Servers für die individuelle Abrechnungen im Sekundentakt zu berechnen.

    • Eine Position im Warehouse, die auch dann gewartet wird, wenn das Warehouse angehalten oder seine Größe geändert wird. Diese Position wirkt sich auf das Hinzufügen und Entfernen von Servern aus, da Server immer in umgekehrter Reihenfolge nach dem Hinzufügen entfernt werden (auch bekannt als LIFO, „Last In, First Out“).

  • Wenn ein Server bereitgestellt wird:

    • Die Mindestabrechnungsgebühr für die Bereitstellung eines Servers beträgt 1 Minute (d. h. 60 Sekunden).

    • Das Stoppen eines Warehouses vor dem Ende der ersten 60 Sekunden bringt keinen Vorteil, da die Credits für diesen Zeitraum bereits in Rechnung gestellt wurden.

    • Nach den ersten 60 Sekunden erfolgt die gesamte Abrechnung für einen aktiven Server sekundengenau (bis der Server heruntergefahren wird). Mit anderen Worten:

      • Wenn ein Server 30 bis 60 Sekunden lang ausgeführt wird, werden ihm 60 Sekunden in Rechnung gestellt.

      • Wenn ein Server 61 Sekunden lang ausgeführt wird, werden ihm nur 61 Sekunden in Rechnung gestellt.

      • Wenn ein Server 61 Sekunden lang ausgeführt, dann heruntergefahren und erneut gestartet wird und dann noch weniger als 60 Sekunden ausgeführt wird, werden ihm 121 Sekunden (60 + 1 + 60) in Rechnung gestellt.

  • Bei der Größenänderung eines Warehouse werden zusätzliche Server für jeden Cluster im Warehouse bereitgestellt:

    • Dies führt zu einer entsprechenden Erhöhung der Anzahl von Credits, die für das Warehouse abgerechnet werden (wenn die zusätzlichen Server aktiviert werden).

    • Der interne Timer für die zusätzlichen Server wird gestartet, wenn diese bereitgestellt werden (d. h. Credits für die zusätzlichen Server werden relativ zum Zeitpunkt der Größenänderung des Warehouses berechnet).

  • Die Credit-Nutzung wird in Abständen von einer Stunde angezeigt. Bei der sekundengenauen Abrechnung werden für die Credit-Nutzung/Abrechnung Bruchbeträge angezeigt.

Wie wirkt sich die Komposition der Abfrage auf die Warehouse-Verarbeitung aus?

Die Anzahl der zur Verarbeitung einer Abfrage erforderlichen Server hängt von der Größe und Komplexität der Abfrage ab. In der Regel skalieren Abfragen linear hinsichtlich der Warehouse-Größe, insbesondere bei größeren und komplexeren Abfragen. Bei Überlegungen zu den Faktoren, die sich auf die Abfrageverarbeitung auswirken, ist Folgendes zu berücksichtigen:

  • Die Gesamtdatengröße der abgefragten Tabellen hat größere Auswirkungen als die Anzahl der Zeilen.

  • Werden in der Abfrage Filter mit Prädikaten verwendet, hat diese dieselbe Auswirkung auf die Verarbeitung wie die Anzahl der Joins/Tabellen in der Abfrage.

Tipp

Um optimale Ergebnisse zu erzielen, müssen Sie versuchen, relativ homogene Abfragen (Größe, Komplexität, Datasets usw.) im selben Warehouse auszuführen. Werden Abfragen mit sehr unterschiedlicher Größe und/oder Komplexität im selben Warehouse ausgeführt, ist eine Analyse des Warehouse-Workloads problematisch, wodurch es schwieriger wird, die optimale Größe für Umfang, Zusammensetzung und Anzahl der Abfragen Ihrer Verarbeitungslast auszuwählen.

Wie wirkt sich das Warehouse-Caching auf Abfragen aus?

Jedes Warehouse verwaltet bei seiner Ausführung einen Cache mit Tabellendaten, auf die zugegriffen wird, wenn Abfragen vom Warehouse verarbeitet werden. Dies ermöglicht eine verbesserte Leistung für nachfolgende Abfragen, wenn diese statt aus den Tabellen aus dem Cache lesen können. Die Größe des Cache wird von der Anzahl der Server im Warehouse bestimmt (d. h. je größer das Warehouse und damit die Anzahl der Server im Warehouse, desto größer der Cache).

Dieser Cache wird gelöscht, wenn das Warehouse angehalten wird. Dies kann dazu führen, dass sich die anfängliche Leistung bei einigen Abfragen nach dem Fortsetzen des Warehouse verlangsamt. Wenn das fortgesetzte Warehouse mehr Abfragen ausführt und verarbeitet, wird der Cache neu erstellt, und Abfragen, die den Cache nutzen können, erfahren eine verbesserte Leistung.

Berücksichtigen Sie dies, wenn Sie entscheiden, ob Sie ein Warehouse anhalten oder weiter ausführen möchten. Mit anderen Worten: Berücksichtigen Sie den Kompromiss zwischen dem Einsparen von Credits durch Anhalten eines Warehouse gegenüber der Aufrechterhaltung des Datencaches aus vorherigen Abfragen, um die Leistung zu verbessern.

Erstellen eines Warehouse

Bei der Erstellung eines Warehouse sind aus Kosten- und Leistungssicht zwei Faktoren besonders zu berücksichtigen:

  • Warehouse-Größe (d. h. die Anzahl der Server pro Cluster)

  • Manuelle vs. automatisierte Verwaltung (zum Starten/Fortsetzen und Anhalten von Warehouses)

Die Anzahl der Cluster im Warehouse ist ebenfalls wichtig, wenn Sie Snowflake Enterprise Edition (oder höher) und Multi-Cluster-Warehouses verwenden. Weitere Details dazu finden Sie unter Vertikales und horizontales Skalieren (unter diesem Thema).

Auswählen einer anfänglichen Warehouse-Größe

Die anfängliche Größe, die Sie für ein Warehouse auswählen, hängt von der Aufgabe ab, die das Warehouse ausführen soll, und von der Arbeitslast, die es verarbeitet. Beispiel:

  • Beim Laden von Daten sollte die Warehouse-Größe der Anzahl der zu ladenden Dateien und der Datenmenge in jeder Datei entsprechen. Weitere Details dazu finden Sie unter Hinweise zum Laden von Daten.

  • Für Abfragen in kleinen Testumgebungen sind kleinere Warehouse-Größen (X-Small, Small, Medium) möglicherweise ausreichend.

  • Bei Abfragen in großen Produktionsumgebungen können größere Warehouse-Größen (Large, X-Large, 2X-Large usw.) kostengünstiger sein.

Beachten Sie jedoch, dass die sekundengenaue Credit-Abrechnung und das automatische Anhalten die notwendige Flexibilität bieten, mit größeren Größen zu beginnen und die Größe dann an Ihre Workloads anzupassen. Sie können jederzeit die Größe eines Warehouse verringern.

Ein größeres Warehouse ist bei kleinen, einfacheren Abfragen jedoch nicht unbedingt schneller. Für kleine/einfache Abfragen ist in der Regel kein X-Large-Warehouse (oder größer) erforderlich, da die Abfragen nicht unbedingt von den zusätzlichen Ressourcen profitieren, unabhängig von der Anzahl der gleichzeitig verarbeiteten Abfragen. Versuchen Sie im Allgemeinen, die Größe des Warehouse an die erwartete Größe und Komplexität der vom Warehouse zu verarbeitenden Abfragen anzupassen.

Tipp

Experimentieren Sie, indem Sie eine Abfrage mit Warehouses verschiedener Größen ausführen (z. B. X-Large, Large, Medium). Die Abfragen, mit denen Sie experimentieren, sollten eine Größe und Komplexität haben, von der Sie wissen, dass sie normalerweise innerhalb von 5 bis 10 Minuten (oder weniger) abgeschlossen ist.

Automatisches Anhalten des Warehouse

Warehouses können so eingestellt werden, dass sie nach einer bestimmten Zeitdauer der Inaktivität automatisch angehalten werden. Das automatische Anhalten wird aktiviert, sobald ein Zeitraum der Inaktivität (Minuten, Stunden usw.) für das Warehouse angegeben wird.

Es wird empfohlen, das automatische Anhalten entsprechend Ihres Workloads und Ihren Anforderungen an die Warehouse-Verfügbarkeit einzustellen:

  • Wenn Sie das automatische Anhalten aktivieren, empfehlen wir, einen niedrigen Wert einzustellen (z. B. 5 oder 10 Minuten oder weniger), da Snowflake die sekundengenaue Abrechnung verwendet. Dadurch wird verhindert, dass Ihre Warehouses ausgeführt werden (und damit Credits verbrauchen), wenn sie nicht benötigt werden.

    Der von Ihnen festgelegte Wert sollte jedoch mit den möglicherweise vorhandenen Lücken in Ihrem Abfrage-Workload übereinstimmen. Wenn Sie z. B. zwischen zwei eingehenden Abfragen regelmäßig Lücken von 2 oder 3 Minuten haben, ist es nicht sinnvoll, das automatische Anhalten auf 1 oder 2 Minuten einzustellen, da sich Ihr Warehouse so ständig in einem Zustand des Anhaltens und Fortsetzens befindet (falls automatisches Fortsetzen ebenfalls aktiviert ist) und jedes Mal, wenn Sie das Warehouse wieder aktivieren, wird Ihnen die minimale Credit-Nutzung in Rechnung gestellt (d. h. 60 Sekunden).

  • Deaktivieren Sie das automatische Anhalten für ein Warehouse in folgenden Fällen:

    • Sie haben eine intensive, gleichmäßige Workload für das Warehouse.

    • Sie benötigen ein Warehouse, das ohne Verzögerung oder Latenz verfügbar ist. Die Bereitstellung eines Servers erfolgt im Allgemeinen sehr schnell (z. B. 1 oder 2 Sekunden). Abhängig von der Größe des Warehouse und der Verfügbarkeit der Server kann dies jedoch länger dauern.

Wichtig

Wenn Sie das automatische Anhalten deaktivieren möchten, müssen Sie die Kosten für die kontinuierliche Ausführung eines Warehouse sorgfältig abwägen, auch wenn das Warehouse keine Abfragen verarbeitet. Die Kosten können insbesondere für größere Warehouses (X-Large, 2X-Large usw.) erheblich sein.

Um das automatische Anhalten zu deaktivieren, müssen Sie in der Weboberfläche explizit Never auswählen oder NULL in SQL angeben.

Automatisches Fortsetzen des Warehouse

Warehouses können so eingestellt werden, dass sie automatisch fortgesetzt werden, wenn neue Abfragen übermittelt werden.

Wir empfehlen, das automatische Fortsetzen zu aktivieren/deaktivieren, je nachdem, wie viel Kontrolle Sie über die Nutzung eines bestimmten Warehouse ausüben möchten:

  • Wenn die Kosten und der Zugriff kein Problem darstellen, aktivieren Sie das automatische Fortsetzen, um sicherzustellen, dass das Warehouse bei Bedarf gestartet wird. Beachten Sie, dass es aufgrund der Serverbereitstellung zu einer kurzen Verzögerung bei der Wiederaktivierung des Warehouse kommen kann.

  • Wenn Sie die Kosten und/oder den Benutzerzugriff kontrollieren möchten, lassen Sie das automatische Fortsetzen deaktiviert, und aktivieren Sie das Warehouse stattdessen manuell nur, wenn dies erforderlich ist.

Vertikales und horizontales Skalieren

Snowflake unterstützt zwei Arten der Skalierung von Warehouses:

  • Vertikales Skalieren durch Ändern der Größe eines Warehouse.

  • Horizontales Skalieren durch Hinzufügen von Clustern zu einem Warehouse (erfordert Snowflake Enterprise Edition).

Warehouse-Größenänderung verbessert Leistung

Die Größenänderung eines Warehouse verbessert im Allgemeinen die Abfrageleistung, insbesondere bei großen und komplexen Abfragen. Dies kann auch dazu beitragen, die Warteschlange zu reduzieren, wenn ein Warehouse nicht über genügend Serverleistung verfügt, um alle gleichzeitig übermittelten Abfragen zu verarbeiten. Beachten Sie, dass die Größenänderung des Warehouses nicht für die Behandlung von Parallelitätsproblemen vorgesehen ist. Verwenden Sie stattdessen zusätzliche Warehouses, um den Workload zu bewältigen, oder verwenden Sie ein Multi-Cluster-Warehouse (sofern diese Funktion für Ihr Konto verfügbar ist).

Snowflake unterstützt jederzeit die Größenänderung eines Warehouses, auch während der Ausführung des Warehouse. Wenn eine Abfrage langsam ausgeführt wird und Sie zusätzliche Abfragen mit ähnlicher Größe und Komplexität haben, die Sie über dasselbe Warehouse ausführen möchten, können Sie die Größe des Warehouse während der Ausführung ändern. Beachten Sie jedoch Folgendes:

  • Wie bereits erwähnt, ist größer nicht notwendigerweise schneller. Bei kleinen Basisabfragen, die bereits schnell ausgeführt werden, sehen Sie nach der Größenänderung des Warehouse möglicherweise keine signifikante Verbesserung.

  • Die Größenänderung eines aktiven Warehouse wirkt sich nicht auf Abfragen aus, die bereits vom Warehouse verarbeitet werden. Die zusätzlichen Server werden nur für Warteschlangen und neue Abfragen verwendet.

Tipp

Durch die Verringerung der Größe eines aktiven Warehouse werden Server aus dem Warehouse entfernt. Wenn die Server entfernt werden, wird der mit den Servern verknüpfte Cache gelöscht. Dies kann sich auf die Leistung auswirken, wie auch das Anhalten des Warehouse die Leistung nach dem Fortsetzen beeinflusst.

Beachten Sie dies bei der Entscheidung, ob Sie die Größe eines aktiven Warehouse verringern oder die aktuelle Größe beibehalten möchten. Mit anderen Worten, Sie müssen einen Kompromiss finden zwischen dem Einsparen von Credits und dem Erhalten des Servercache.

Multi-Cluster-Warehouses verbessern Parallelität

Multi-Cluster-Warehouses wurden speziell für die Behandlung von Warteschlangen- und Leistungsproblemen im Zusammenhang mit einer großen Anzahl gleichzeitiger Benutzer und/oder Abfragen entwickelt. Außerdem können Multi-Cluster-Warehouses dazu beitragen, diesen Prozess zu automatisieren, wenn die Anzahl der Benutzer/Abfragen tendenziell schwankt.

Berücksichtigen Sie bei der Entscheidung, ob Multi-Cluster-Warehouses und wenn ja, wie viele Cluster pro Warehouse verwendet werden sollen, Folgendes:

  • Wenn Sie die Snowflake Enterprise Edition (oder eine höhere Edition) verwenden, sollten alle Ihre Warehouses als Multi-Cluster-Warehouse konfiguriert werden.

  • Sofern Sie keine speziellen Anforderungen zur Ausführung im Modus „Maximiert“ haben, sollten Multi-Cluster-Warehouses so konfiguriert werden, dass sie im Modus „Automatische Skalierung“ ausgeführt werden, sodass Snowflake Cluster bei Bedarf automatisch starten und stoppen kann.

  • Bei der Auswahl der minimalen und maximalen Anzahl von Clustern für ein Multi-Cluster-Warehouse müssen Sie Folgendes beachten:

    Minimum

    Behalten Sie den Standardwert 1 bei. Dadurch wird sichergestellt, dass zusätzliche Cluster nur bei Bedarf gestartet werden. Wenn jedoch die Hochverfügbarkeit des Warehouses von Belang ist, verwenden Sie einen Wert größer als 1. Damit wird die Verfügbarkeit und Kontinuität des Warehouses in dem unwahrscheinlichen Fall sichergestellt, dass ein Cluster ausfällt.

    Maximum

    Stellen Sie diesen Wert so groß wie möglich ein, und achten Sie auf die Warehouse-Größe und die entsprechenden Credit-Kosten. Ein X-Large-Warehouse (16 Server) mit maximal 10 Clustern verbraucht beispielsweise 160 Credits pro Stunde, wenn alle 10 Cluster in der Stunde durchgehend ausgeführt werden.