Verwenden von Warehouses

Alle Warehouse-Aufgaben können über die Snowflake-Weboberfläche oder die DDL-Befehle für Warehouses ausgeführt werden.

Unter diesem Thema:

Erstellen von Warehouses

Ein Warehouse kann über die Weboberfläche oder mit SQLerstellt werden:

Snowsight:

Wählen Sie Admin » Warehouses » Warehouse aus.

Classic Console:

Wählen Sie Warehouses Registerkarte „Warehouses“ » Create aus.

SQL:

Führen Sie einen CREATE WAREHOUSE-Befehl aus.

Beim Erstellen eines Warehouses können Sie angeben, ob das Warehouse zunächst im Status „Gestartet“ (d. h. es wird ausgeführt) oder „Angehalten“ erstellt werden soll. Wenn Sie „Gestartet“ wählen, beginnt das Warehouse mit dem Verbrauch von Credits, sobald alle Computeressourcen für das Warehouse bereitgestellt wurden.

Bemerkung

Wenn Sie sich für das Erstellen eines Warehouses im Status „Gestartet“ entscheiden, kann es einige Zeit dauern, bis das Warehouse vollständig verfügbar ist, da Snowflake alle Computeressourcen für das Warehouse bereitstellt.

Starten oder Fortsetzen eines Warehouses

Ein Warehouse kann jederzeit gestartet werden, einschließlich beim erstmaligen Erstellen. Wenn ein Warehouse erstellt wurde, entspricht das Fortsetzen eines Warehouse dem Starten eines Warehouse.

Ein angehaltenes (d. h. inaktives) Warehouse kann über die Weboberfläche oder mit SQL fortgesetzt werden:

Snowsight:

Wählen Sie Admin » Warehouses » <Name_des_angehaltenen_Warehouses> » Weitere Optionen » Resume aus.

Classic Console:

Wählen Sie Warehouses Registerkarte „Warehouses“ » <Name_des_angehaltenen_Warehouses> » Resume aus.

SQL:

Führen Sie einen ALTER WAREHOUSE-Befehl mit dem Schlüsselwort RESUME aus.

Das Starten eines Warehouses dauert normalerweise nur wenige Sekunden. In seltenen Fällen kann es jedoch länger dauern, da Snowflake die Computeressourcen für das Warehouse bereitstellen muss.

Warehouses verbrauchen während ihrer Ausführung Credits:

  • Ein Warehouse beginnt mit dem Verbrauch von Credits, sobald alle Computeressourcen für das Warehouse bereitgestellt wurden.

    • In seltenen Fällen, in denen einige Server nicht bereitgestellt werden können, verbraucht das Warehouse nur Credits für die bereitgestellten Computeressourcen.

    • Sobald die verbleibenden Computeressourcen erfolgreich bereitgestellt wurden, verbraucht das Warehouse Credits für alle angeforderten Computeressourcen.

  • Das Starten oder Fortsetzen eines Warehouses dauert meist nur wenige Sekunden. In einigen Fällen kann es jedoch länger dauern, da Snowflake die Computeressourcen für das Warehouse bereitstellen muss.

  • Snowflake beginnt mit der Ausführung von SQL-Anweisungen, die an ein Warehouse übermittelt wurden, erst, wenn alle Computeressourcen für das Warehouse erfolgreich bereitgestellt wurden, es sei denn, auf einer der Ressourcen kann Folgendes nicht bereitgestellt werden:

    • Wenn Computeressourcen für das Warehouse während des Startens nicht bereitgestellt werden, versucht Snowflake, den oder die ausgefallenen Ressourcen zu reparieren.

    • Während des Reparaturvorgangs beginnt das Warehouse mit der Verarbeitung von SQL-Anweisungen, sobald 50 % oder mehr der angeforderten Computeressourcen erfolgreich bereitgestellt wurden.

Credits werden während der Ausführung des Warehouses sekundengenau abgerechnet, wobei bei jedem Fortsetzen des Warehouses minimal 1 Minute abgerechnet wird. Der Credit-Verbrauch wird jedoch in Schritten von 60 Minuten (d. h. stundenweise) angegeben.

Bemerkung

Ein Warehouse muss sich in Ausführung befinden und das aktuelle Warehouse der Sitzung sein (d. h. In Ausführung), um SQL-Anweisungen zu verarbeiten, die in der Sitzung übermittelt werden. Weitere Informationen dazu finden Sie unter Verwenden eines Warehouses (unter diesem Thema).

Anhalten eines Warehouses

Ein Warehouse kann jederzeit angehalten werden, auch wenn gerade SQL-Anweisungen ausgeführt werden. Durch das Anhalten eines Warehouses werden die zugehörigen Computeressourcen heruntergefahren und keine Credits mehr verbraucht.

Ein Warehouse kann über die Weboberfläche oder mit SQL angehalten werden:

Snowsight:

Wählen Sie Admin » Warehouses » <Name_des_gestarteten_Warehouses> » Weitere Optionen » Suspend aus.

Classic Console:

Wählen Sie Warehouses Registerkarte „Warehouses“ » <Name_des_gestarteten_Warehouses> » Suspend aus.

SQL:

Führen Sie einen ALTER WAREHOUSE-Befehl mit dem Schlüsselwort SUSPEND aus.

Wenn Sie ein Warehouse anhalten, fährt Snowflake sofort alle im Leerlauf befindlichen Computeressourcen des Warehouses herunter, lässt jedoch zu, dass alle Computeressourcen, die Anweisungen ausführen, so lange fortgesetzt werden, bis die Anweisungen abgeschlossen sind. Dann werden auch diese Ressourcen heruntergefahren, und der Status des Warehouse wird in „Angehalten“ geändert. Computeressourcen, die auf das Herunterfahren warten, befinden sich im Ruhemodus („Stilllegung“).

Ändern der Warehouse-Größe

Die Größe eines Warehouse kann jederzeit hoch- oder runterskaliert werden, auch während das Warehouse ausgeführt und Anweisungen verarbeitet werden.

Die Größe eines Warehouse kann über die Weboberfläche oder mit SQL geändert werden:

Snowsight:

Wählen Sie Admin » Warehouses » <Warehouse-Name> » Weitere Optionen » Edit aus.

Classic Console:

Wählen Sie Warehouses Registerkarte „Warehouses“ » <Warehouse-Name> » Configure aus.

SQL:

Führen Sie einen ALTER WAREHOUSE-Befehl mit SET WAREHOUSE_SIZE = ... aus.

Das Ändern eines Warehouse auf eine größere Größe ist hilfreich, wenn die vom Warehouse ausgeführten Operationen von mehr Computeressourcen profitieren sollen, einschließlich:

  • Verbessern der Leistung großer, komplexer Abfragen bei großen Datasets

  • Verbesserung der Leistung beim Laden und Entladen besonders umfangreicher Datenmengen

Auswirkungen der Größenänderung eines aktiven Warehouses

Durch die Größenänderung eines aktiven Warehouses werden Computeressourcen in jedem Cluster des Warehouses hinzugefügt oder entfernt. Alle mit dem Starten oder Anhalten eines Warehouses verbundenen Nutzungs- und Credit-Regeln gelten für die Größenänderung eines gestarteten Warehouses, z. B.:

  • Computeressourcen, die zu einem Warehouse hinzugefügt werden, verbrauchen bereits bei der Bereitstellung Credits. Die zusätzlichen Computeressourcen beginnen jedoch erst dann mit der Ausführung von Anweisungen, wenn alle Ressourcen bereitgestellt wurden.

  • Computeressourcen werden nur dann aus einem Warehouse entfernt, wenn sie nicht mehr zur Ausführung aktueller Anweisungen benötigt werden.

Die Größenänderung eines Warehouses hat keine Auswirkungen auf Anweisungen, die derzeit vom Warehouse ausgeführt werden. Bei der Größenänderung auf eine größere Größe werden die neuen Computeressourcen nach ihrer vollständigen Bereitstellung nur dazu verwendet, die Anweisungen auszuführen, die sich bereits in der Warehouse-Warteschlange befinden, sowie alle zukünftigen Anweisungen, die an das Warehouse übermittelt werden.

Tipp

Um zu überprüfen, ob die zusätzlichen Computeressourcen für Ihr Warehouse vollständig bereitgestellt wurden, fügen Sie den Parameter WAIT_FOR_COMPLETION zum Befehl ALTER WAREHOUSE hinzu. Sie können auch SHOW WAREHOUSES verwenden, um dessen state-Wert zu prüfen.

Auswirkungen der Größenänderung eines angehaltenen Warehouses

Durch die Größenänderung eines angehaltenen Warehouse werden keine neuen Computeressourcen für das Warehouse bereitgestellt. Snowflake wird lediglich angewiesen, die zusätzlichen Computeressourcen bereitzustellen, wenn das Warehouse wieder fortgesetzt wird. Zu diesem Zeitpunkt gelten alle mit dem Starten eines Warehouse verbundenen Nutzungs- und Credit-Regeln.

Verwenden eines Warehouses

Um eine Abfrage oder eine DML-Anweisung in Snowflake ausführen zu können, muss sich ein Warehouse in Ausführung befinden, und dieses Warehouse muss als das aktuelle Warehouse der Sitzung angegeben sein, in der die Abfrage/Anweisung übermittelt wird.

Eine Snowflake-Sitzung kann jeweils nur ein aktuelles Warehouse haben. Das aktuelle Warehouse für die Sitzung kann jederzeit mit dem Befehl USE WAREHOUSE angegeben oder geändert werden.

Wenn ein aktives Warehouse als das aktuelle Warehouse für die Sitzung festgelegt wurde, werden von diesem alle Abfragen und DML-Anweisungen verarbeitet, die innerhalb der Sitzung übermittelt werden. Auf den Seiten History Registerkarte „Verlauf“ und Worksheets Registerkarte „Arbeitsblatt“ der klassischen Weboberfläche können Sie das Warehouse anzeigen, das für die Verarbeitung der einzelnen Abfragen/Anweisungen verwendet wird.

Delegieren der Warehouse-Verwaltung

Die Rolle ACCOUNTADMIN verfügt standardmäßig über die Berechtigungen, um alle Warehouses in dem Konto zu ändern, anzuhalten, zu beschreiben und andere Operationen auszuführen.

Wenn Sie diese Fähigkeiten an eine kundenspezifische Rolle in Ihrem Konto delegieren müssen, können Sie den Befehl GRANT <Berechtigungen> verwenden, um dieser Rolle die Berechtigung MANAGE WAREHOUSES zu erteilen. Das Erteilen der Berechtigung MANAGE WAREHOUSES ist gleichbedeutend mit dem Erteilen der Berechtigungen MODIFY, MONITOR und OPERATE für alle Warehouses des Kontos.

Die folgenden Beispiele zeigen, wie Sie die Fähigkeiten zum Verwalten von Warehouses an eine kundenspezifische Rolle namens manage_wh_role delegieren können. Im Beispiel wird manage_wh_role verwendet, um Änderungen am Warehouse test_wh vorzunehmen, das einer anderen Rolle (create_wh_role) gehört.

Erstellen Sie eine neue Rolle, die ein neues Warehouse erstellen und besitzen wird, und erteilen Sie dieser Rolle die Berechtigung CREATE WAREHOUSE:

CREATE ROLE create_wh_role;
GRANT CREATE WAREHOUSE ON ACCOUNT TO ROLE create_wh_role;
GRANT ROLE create_wh_role TO ROLE SYSADMIN;
Copy

Erstellen Sie eine zweite Rolle, die alle Warehouses des Kontos verwaltet, und erteilen Sie dieser Rolle die Berechtigung MANAGE WAREHOUSES:

CREATE ROLE manage_wh_role;
GRANT MANAGE WAREHOUSES ON ACCOUNT TO ROLE manage_whs_role;
GRANT ROLE manage_whs_role TO ROLE SYSADMIN;
Copy

Erstellen Sie mit der Rolle create_wh_role ein neues Warehouse:

USE ROLE create_wh_role;
CREATE OR REPLACE WAREHOUSE test_wh
    WITH WAREHOUSE_SIZE= XSMALL;
Copy

Ändern Sie die aktuelle Rolle in manage_wh_role:

USE ROLE manage_whs_role;
Copy

Obwohl manage_wh_role nicht Eigentümer von test_wh ist, verfügt diese Rolle über die Berechtigung MANAGE WAREHOUSES, d. h. Sie können sie nutzen:

  • Halten Sie das Warehouse an, und setzen Sie wieder fort:

    ALTER WAREHOUSE test_wh SUSPEND;
    ALTER WAREHOUSE test_wh RESUME;
    
    Copy
  • Ändern Sie die Größe des Warehouses:

    ALTER WAREHOUSE test_wh SET WAREHOUSE_SIZE = SMALL;
    
    Copy
  • Beschreiben Sie das Warehouse:

    DESC WAREHOUSE test_wh;
    
    Copy