Die Plattform von Snowflake unterscheidet sich architektonisch von fast allen herkömmlichen Datenbanksystemen und Cloud Data Warehouses. Snowflake verfügt über vollständig getrennte Rechen- und Speicherkapazitäten, und beide Ebenen der Plattform sind nahezu augenblicklich elastisch. Mit Snowflake entfällt die Notwendigkeit, eine fortschrittliche Ressourcenplanung vorzunehmen, sich mit Workload-Zeitplänen herumzuschlagen und neue Workloads auf dem System zu verhindern, weil man Angst vor Festplatten- und CPU-Limitierungen hat. Als Cloud-Datenplattform kann Snowflake nahezu sofort skaliert werden, um geplantes, Ad-hoc- oder überraschendes Wachstum zu bewältigen. Das bedeutet, dass Sie nicht für eine feste, begrenzte Menge an Speicher- und Rechenleistung bezahlen müssen, sondern dass die Menge an Speicher- und Rechenleistung wächst und schrumpft, wenn sich Ihre Anforderungen im Laufe der Zeit ändern.
Durch die Nutzung eines Kernprinzips der Cloud können Elastizität und Rechenleistung im Laufe des Tages dynamisch auf Arbeitslasten skaliert werden, wenn der Bedarf an Gleichzeitigkeit oder roher Rechenleistung schwankt, um die Nachfrage zu befriedigen. Der Speicherplatz für Datenbanken, Tabellen und Metadaten wird mit der Zeit wachsen und schrumpfen. Es gibt einige Optimierungen, die jeder Snowflake-Kontoverwalter vornehmen sollte, und einige fortschrittlichere Methoden, die er in Betracht ziehen sollte, wenn sein Snowflake-Rechenaufwand wächst. Da Rechenleistung und Speicher getrennt und elastisch sind, sollten diese Ressourcen auf Verbrauch, überraschendes Wachstum und Ressourceneffizienz überwacht werden.
Snowflake ist standardmäßig praktisch unbegrenzt, und Kontoadministratoren können kleinere Einschränkungen auf Konto- und Ressourcenebene einrichten, um sich gegen unseriöse Benutzer oder eine suboptimale Nutzung von Ressourcen und Guthaben zu schützen. So können sie beispielsweise die Rechenleistung auf der Ebene einzelner virtueller Lagerhäuser, auf Benutzerebene oder auf Konto- und Organisationsebene durch Ressourcenmonitore proaktiv kontrollieren. Benutzer, Datenbanken, Tabellen, Abfragen und Workloads können über das ACCOUNT_USAGE-Schema überwacht werden, das allen Snowflake-Konten gemeinsam ist. Die folgende Abbildung zeigt den Status und die Grundkonfiguration von virtuellen Lagerhäusern in einem Konto:
Best Practice #1: Auto-Suspend aktivieren
Stellen Sie sicher, dass alle virtuellen Lagerhäuser auf automatische Aussetzung eingestellt sind. Auf diese Weise schaltet Auto-Suspend Ihre virtuellen Lager aus, wenn sie mit der Verarbeitung von Abfragen fertig sind, und stoppt so den Kreditverbrauch. Führen Sie die folgende Abfrage aus, um alle virtuellen Lager zu ermitteln, für die die automatische Aussetzung nicht aktiviert ist:
Best Practice #2: Automatische Wiederaufnahme aktivieren
Stellen Sie sicher, dass alle virtuellen Lager auf automatische Wiederaufnahme eingestellt sind. Wenn Sie die automatische Unterbrechung implementieren und entsprechende Timeout-Grenzen festlegen, ist die Aktivierung der automatischen Wiederaufnahme ein Muss; andernfalls können die Benutzer das System nicht abfragen. Führen Sie die folgenden Schritte aus, um alle virtuellen Lager zu identifizieren, die nicht automatisch fortgesetzt werden, wenn sie abgefragt werden:
Best Practice Nr. 3: Angemessene Timeouts für Workloads festlegen
Alle virtuellen Warehouses sollten eine für die jeweilige Arbeitslast geeignete Zeitüberschreitung haben:
Für Task‑, Datenlade- und ETL/ELT-Warehouses sollte die Zeitüberschreitung so eingestellt werden, dass sie sofort nach Abschluss beendet wird.
Für BI- und SELECT-Query-Warehouses sollten Sie den Timeout für die Unterbrechung in den meisten Fällen auf 10 Minuten festlegen, um die Datencaches für den häufigen Zugriff durch Endbenutzer warm zu halten.
Für DevOps‑, DataOps- und Data Science-Warehouses setzen Sie die Zeitüberschreitung für die Aussetzung auf 5 Minuten, da ein warmer Cache für Ad-hoc- und sehr individuelle Abfragen nicht so wichtig ist.
Hier ist eine Beispielkonfiguration:
Best Practice Nr. 4: Zeitüberschreitungen für Kontoauszüge festlegen
Verwenden Sie die Parameter STATEMENT_QUEUED_TIMEOUT_IN_SECONDS und STATEMENT_TIMEOUT_IN_SECONDS, um automatisch Abfragen zu stoppen, deren Ausführung zu lange dauert, entweder aufgrund eines Benutzerfehlers oder eines eingefrorenen Clusters. Passen Sie Anweisungen auf Lager‑, Konto‑, Sitzungs- und Benutzer-Timeout-Ebene entsprechend Ihrer Datenstrategie für lang laufende Abfragen an.
Hier ist ein Beispiel:
ALTER WAREHOUSE LOAD_WH SET STATEMENT_TIMEOUT_IN_SECONDS= 3600;rnSHOW PARAMETERS IN WAREHOUSE LOAD_WH;
Best Practice Nr. 5: Erkennen von Lagern, die vom Sieben-Tage-Durchschnitt abweichen
Hier ein praktischer Tipp, der aus einer direkten Interaktion mit einem Kunden stammt, der ein Lager auf eine größere Größe eingestellt hatte, um eine Aufgabe zu erledigen, es aber nicht so zurückstellte, wie er es vorgefunden hatte. Ich erstellte für ihn die folgende Abfrage, die er jeden Morgen ausführen sollte, um die Nutzung des Lagerkredits zu ermitteln, die vom Siebentagesdurchschnitt abweicht. Die folgende Abbildung zeigt die Ergebnisse der Ausführung der Abfrage.
Best Practice Nr. 6: Überwachen Sie Lagerhäuser, die sich dem Schwellenwert für die Abrechnung von Cloud-Services nähern
Die folgende Abfrage befasst sich mit Lagern, bei denen die Kosten für Cloud-Services einen hohen Prozentsatz der Arbeitslast ausmachen. Für ein Konto insgesamt (und außerhalb der serverlosen Funktionen) berechnet Snowflake Cloud-Services nur dann, wenn sie 10 % des täglichen Guthabenverbrauchs des virtuellen Lagers überschreiten. Cloud-Services-Aufgaben sind nützlich für Metadaten-Operationen wie BI-Tool-Erkennungsabfragen, Heartbeat-Abfragen, SHOW-Befehle, Cache-Nutzung und verschiedene andere Service-Optimierungsfunktionen. Wenn Sie also an einem Tag 100 Rechenguthaben verbrauchen, aber 15 zusätzliche Guthaben für Cloud-Dienste verwenden (was unwahrscheinlich ist), werden Ihnen für diesen Tag weitere 5 Guthaben für die 5 Guthaben für Cloud-Dienste in Rechnung gestellt, die über der 10 %-Grenze lagen. Das bedeutet, dass insgesamt 105 Credits für den Tag in Rechnung gestellt werden, wobei Snowflake 10 Credits für die Nutzung von Cloud-Diensten kostenlos zur Verfügung stellt. Mithilfe dieser Abfrage können Sie herausfinden, welche Lager sich dem Schwellenwert von 10 % nähern oder ihn überschreiten, sodass Sie dem nachgehen können.
Best Practice Nr. 7: Ungenutzte Tabellen löschen
Möglicherweise haben Sie ungenutzte Tabellen, die für eine Löschung in Frage kommen. Stellen Sie nur sicher, dass niemand diese Tabellen abfragt. Vielleicht sollten Sie sogar vorschreiben, dass alle Tabellen vor dem Löschen überprüft werden müssen. (Wenn Sie Time Travel eingerichtet haben, können Sie die Löschung einer Tabelle rückgängig machen, wenn Sie einen Fehler machen). Dies ist spezifisch für den Datenbankkontext, also achten Sie darauf, Tabellen in allen Ihren Datenbanken zu prüfen. Achten Sie auch auf Tabellen, die nur in View-DDLs verwendet werden. Hier ist eine Beispielabfrage:
Best Practice Nr. 8: Bereinigen Sie ruhende Benutzer
Es ist eine gute Idee, ruhende Benutzer oder Benutzer, die sich nie bei Snowflake angemeldet haben, aus Ihrem Konto zu löschen. Hier ist ein Beispiel, das eine Liste beider Arten von Benutzern generiert:
Leitplanken für die automatische Skalierung
Die tatsächliche Nutzung einer Datenplattform schwankt von Stunde zu Stunde, von Tag zu Tag und von Monat zu Monat erheblich. Standardmäßig ist Snowflake so konzipiert, dass es automatisch skaliert und maximale Leistung und Effizienz bietet. Für einige Arbeitslasten sind jedoch statische und gut vorhersehbare Ressourcen besser geeignet, und Snowflake kann leicht so konfiguriert werden, dass dieses konsistente Verbrauchsmodell für jeden Tag des Jahres bereitgestellt wird. Durch die Implementierung einiger Einschränkungen auf Konto- und Ressourcenebene können Administratoren unerwartete Nutzung durch unvorsichtige Benutzer oder suboptimale Skalierungsprofile verhindern:
- Mithilfe von Ressourcenmonitoren können Administratoren proaktive Warnungen erhalten und die Rechenleistung auf Account‑, Virtual-Warehouse- und sogar auf Benutzerebene kontrollieren.
- Auf reaktiver Basis können Administratoren Benutzer, Datenbanken, Tabellen, Abfragen und Workloads über das ACCOUNT_USAGE-Schema überwachen, das allen Snowflake-Konten gemeinsam ist. Diese Daten werden in der Regel zur Prognose von Nutzungstrends und zur Erstellung von Showback- und Chargeback-Abrechnungen für Abteilungen, Teams und Workloads verwendet. Tägliche Nutzungsmetriken sind sowohl für einzelne Benutzer als auch für Konto- und Organisationsadministratoren in die Plattform integriert. Diese Abbildung zeigt das integrierte Dashboard mit einer stündlichen Aufschlüsselung der Guthaben für Rechen- und Cloud-Dienste:
Best Practice Nr. 9: Lagerhäuser finden, die keine Ressourcenmonitore haben
Ressourcenmonitore sind eine großartige Möglichkeit zur proaktiven Kontrolle von Workload-Budgets und zur Vermeidung unerwarteter Ressourcenspitzen. Ressourcenmonitore können dabei helfen, sowohl die Nutzung durch Benutzer als auch die Nutzung von Servicekonten in Snowflake zu überwachen. Zunächst sollten Sie dedizierte virtuelle Warehouses für jede Ihrer Lade‑, ELT‑, BI‑, Berichts- und Data Science-Workloads sowie für andere Workloads haben. Konten und Warehouses können Gesamt‑, Jahres‑, Monats‑, Wochen- und Tageskreditkontingente haben.
Die folgende Abfrage identifiziert alle Warehouses, die nicht über einen Ressourcenmonitor verfügen:
Best Practice #10: Ressourcenmonitore anwenden
Sie können die UI oder SQL verwenden, um Ihre Ressourcenüberwachungsrichtlinie anzuwenden. Basierend auf den Kontoeinstellungen können Ressourcenüberwachungen Sie benachrichtigen, wenn der Verbrauch einen niedrigeren Schwellenwert erreicht, und dann das Lager oder Konto bei einem höheren Schwellenwert aussetzen.
Überlegungen zur Ressourcenüberwachung
- Wir empfehlen, die Überwachung so einzustellen, dass Sie benachrichtigt werden, wenn ein bestimmter Schwellenwert erreicht wird.
- Wenn sich der Verbrauch dem maximalen Budget nähert, stellen Sie den Ressourcenmonitor so ein, dass er das Warehouse oder das gesamte Konto automatisch aussetzt, so dass Abfragen abgeschlossen werden können, aber zukünftige Anfragen verhindert werden.
- Ressourcenmonitore können auch verwendet werden, um alle derzeit laufenden Abfragen zu beenden und die Ressource oder das Konto sofort auszusetzen. Diese Einstellung ist in der Regel für Situationen reserviert, in denen eine feste Quote überschritten wird.
- Für Kunden, die keine festen Quoten festlegen möchten, ist es immer eine gute Idee, Benachrichtigungsmonitore für alle Warehouses einzurichten, falls die Nutzung unerwartet stark ansteigt. Auf diese Weise erhalten alle Administratoren innerhalb des Kontos eine E‑Mail oder eine Benachrichtigung auf dem Bildschirm, wenn Schwellenwerte erreicht werden.
Die folgende Abbildung zeigt den Konfigurationsbildschirm für die Ressourcenüberwachung:
Bonus Best Practice: BI-Partner-Dashboards verwenden
Als elfte Best Practice können Sie als Bonus die Dashboards nutzen, die von den Snowflake-Enthusiasten einiger unserer BI- und Analysepartner erstellt wurden, um die Snowflake-Nutzung zu überwachen. Da die Nutzung von Snowflake über ein Standardschema an alle Konten weitergegeben wird, handelt es sich um Plug-and-Play-Dashboards. Eine der besten Eigenschaften von Snowflake ist die gemeinsame Nutzung von Daten im Petabyte-Maßstab, um Pipelines der Nutzungshistorie an alle Snowflake-Konten weiterzugeben.
Tableau hat eine Reihe von Dashboards zusammengestellt, die die Kreditnutzung, die Leistung und die Benutzerakzeptanz der Plattform zeigen. Das unten gezeigte Dashboard „Compute Cost Overview“ kann verwendet werden, um den Kreditverbrauch zu verstehen, die Budgetzuweisung zu planen und Spitzenausreißer zu identifizieren, um die Auswirkungen von „Kaufzeiten“ zu reduzieren. Das Enterprise Analytics-Team von Tableau nutzt diese Dashboards, um neue Nutzungsmuster aufzudecken und die Effizienz der Lagerkosten zu optimieren.
Schlussfolgerung
Mit dem hochelastischen Rechen- und sekundengenauen Abrechnungsmodell von Snowflake sollten Account-Administratoren die Nutzung, das Wachstum und die Ressourceneffizienz laufend überwachen, um sicherzustellen, dass sie den Leistungsanforderungen und Budgets entsprechen. Auch wenn Snowflake bei der automatischen Optimierung der Ressourcen helfen kann, gibt es für Account-Administratoren Möglichkeiten, ihre Bereitstellung weiter zu optimieren, vor allem, wenn ihre Rechenleistung wächst. Wir empfehlen diese grundlegenden Best Practices für die Überwachung und Optimierung von Ressourcen, um häufige Fallstricke zu vermeiden, die leicht zu übersehen sind.
Quelle: Snowflake
Erfahren Sie mehr über Lösungen im Bereich Snowflake oder besuchen Sie eines unserer kostenlosen Webinare.