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 einzelne 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:

  • Die Größe des Warehouses.

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

  • Die Zeitdauer, die jedes Warehouse ausgeführt wird.

Beispiel:

X-Small

Rechnet 1 Credit pro voller, ununterbrochener Stunde ab, die jedes Warehouse ausgeführt wird. Jede weitere Größe verdoppelt im Allgemeinen die Anzahl der Computeressourcen pro Warehouse.

4X-Large

Berechnet 128 Credits pro voller, ununterbrochener Stunde, die jedes Warehouse ausgeführt wird.

Beachten Sie Folgendes:

  • Bei der Bereitstellung von Warehouses:

    • 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 ein aktives Warehouse sekundengenau (bis es heruntergefahren wird). Nachfolgend finden Sie drei Beispiele:

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

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

      • Wenn ein Warehouse 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.

  • Die Größenänderung eines Warehouses stellt zusätzliche Computeressourcen für das Warehouse bereit:

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

    • Die zusätzlichen Computeressourcen werden abgerechnet, wenn diese bereitgestellt werden (d. h. Credits für die zusätzlichen Ressourcen werden relativ zum Zeitpunkt der Größenänderung des Warehouses berechnet).

    • Eine Größenänderung von einem 5XL- oder 6XL-Warehouse auf ein 4XL oder kleineres Warehouse führt zu einer kurzen Periode, in der dem Kunden sowohl das neue als auch das alte Warehouse in Rechnung gestellt wird, während sich das alte Warehouse im Ruhemodus („Stilllegung“) befindet.

  • 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 Computeressourcen 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 aus dem Cache statt aus den Tabellen der Abfrage lesen können. Die Größe des Cache wird von der Anzahl der Computeressourcen im Warehouse bestimmt (d. h. je größer das Warehouse und damit die Menge an Computeressourcen 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 Warehouses 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 Warehouses sind aus Kosten- und Leistungssicht zwei Faktoren besonders zu berücksichtigen:

  • Größe des Warehouses (d. h. verfügbare Computeressourcen)

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

Die Warehouse-Größe 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 Planung eines Datenladevorgangs.

  • 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 Abfragen auf 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 Warehouse-Bereitstellung ist im Allgemeinen sehr schnell (z. B. 1 oder 2

      Sekunden). Je nach Größe des Warehouses und der Verfügbarkeit der bereitzustellenden Computeressourcen kann es jedoch auch länger dauern.

Wichtig

Wenn Sie das automatische Anhalten deaktivieren möchten, müssen Sie die Kosten für die kontinuierliche Ausführung eines Warehouses 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 auf der Weboberfläche explizit Never auswählen oder in SQL 0 oder NULL angeben.

Automatisches Fortsetzen des Warehouses

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 Bereitstellung 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 dann, wenn es 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 Warehouses zu einem Multi-Cluster-Warehouse (erfordert Snowflake Enterprise Edition).

Warehouse-Größenänderung verbessert Leistung

Die Größenänderung eines Warehouses 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 Computeressourcen 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 Warehouses 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 Computeressourcen werden nach vollständiger Bereitstellung nur für Warteschlangen und neue Abfragen verwendet.

  • Eine Größenänderung von einem 5XL- oder 6XL-Warehouse auf ein 4XL oder kleineres Warehouse führt zu einer kurzen Periode, in der dem Kunden sowohl das neue als auch das alte Warehouse in Rechnung gestellt wird, während sich das alte Warehouse im Ruhemodus („Stilllegung“) befindet.

Tipp

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

Beachten Sie dies bei der Entscheidung, ob Sie die Größe eines aktiven Warehouses 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 Warehouse-Cache.

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 verwendet werden sollen und wenn ja, wie viele Warehouses pro Multi-Cluster-Warehouse, 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 Warehouses bei Bedarf automatisch starten und stoppen kann.

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

    Minimum

    Behalten Sie den Standardwert 1 bei. Dadurch wird sichergestellt, dass zusätzliche Warehouses 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 Multi-Cluster-Warehouses in dem unwahrscheinlichen Fall sichergestellt, dass ein Warehouse ausfällt.

    Maximum

    Verwenden Sie den größtmöglichen Wert, und achten Sie auf die Warehouse-Größe und die entsprechenden Credit-Kosten. Ein Multi-Cluster-Warehouse der Größe X-Large mit maximal 10 Clustern verbraucht beispielsweise 160 Credits pro Stunde, wenn alle 10 Cluster in der Stunde durchgehend ausgeführt werden.