Utilisation des entrepôts

Toutes les tâches d’entrepôt peuvent être effectuées depuis l’interface Web de Snowflake ou à l’aide des commandes DDL pour entrepôt.

Dans ce chapitre :

Création d’un entrepôt

Un entrepôt peut être créé via l’interface Web ou en utilisant SQL :

Snowsight

Sélectionnez Admin » Warehouses » Warehouse

Classic Console

Sélectionnez Warehouses Warehouses tab » Create

SQL

Exécutez une commande CREATE WAREHOUSE.

Lorsque vous créez un entrepôt, vous pouvez spécifier si l’entrepôt est créé initialement à l’état « Démarré » (c’est-à-dire en cours exécution) ou « Suspendu ». Si vous choisissez « Démarré », l’entrepôt commence à consommer des crédits dès que toutes les ressources de calcul sont mises en service pour l’entrepôt.

Note

Si vous choisissez de créer un entrepôt à l’état « Démarré », l’entrepôt peut prendre un certain temps avant d’être entièrement disponible, car Snowflake met en service toutes les ressources de calcul pour l’entrepôt.

Démarrage ou reprise d’un entrepôt

Un entrepôt peut être démarré à tout moment, y compris lors de la création initiale. Une fois qu’un entrepôt est créé, la reprise d’un magasin est la même chose que le démarrage d’un magasin.

Un entrepôt suspendu (c’est-à-dire inactif) peut être repris via l’interface Web ou en utilisant SQL :

Snowsight

Sélectionnez Admin » Warehouses » <nom_entrepôt_suspendu> » More options » Resume

Classic Console

Sélectionnez Warehouses Warehouses tab » <nom_entrepôt_suspendu> » Resume

SQL

Exécutez une commande ALTER WAREHOUSE avec le mot-clé RESUME.

Le démarrage d’un entrepôt ne prend généralement que quelques secondes. Cependant, dans de rares cas, cela peut prendre plus de temps car Snowflake met en service les ressources de calcul qui fournissent les ressources de calcul de l’entrepôt.

Les entrepôts consomment des crédits en cours d’exécution :

  • Un entrepôt commence à consommer des crédits une fois que toutes les ressources de calcul sont provisionnées pour l’entrepôt.

    • Dans de rares cas, lorsque certaines des ressources de calcul ne parviennent pas à être provisionnées, l’entrepôt consomme uniquement des crédits pour les ressources de calcul provisionnées.

    • Une fois que les ressources de calcul restantes ont été provisionnées, l’entrepôt commence à consommer des crédits pour toutes les ressources de calcul demandées.

  • Bien que le démarrage ou la reprise d’un entrepôt ne prenne souvent que quelques secondes, dans certains cas, cela peut prendre plus de temps, car Snowflake met en service les ressources de calcul qui fournissent les ressources de calcul de l’entrepôt.

  • Snowflake n’exécute pas les instructions SQL soumises à un entrepôt tant que toutes les ressources de calcul de l’entrepôt n’ont pas été mises en service avec succès, à moins que l’une des ressources ne puisse pas être mise en service :

    • Si l’une des ressources de calcul de l’entrepôt n’arrive pas à être mise en service durant le démarrage, Snowflake tente de réparer les ressources échouées.

    • Pendant le processus de réparation, l’entrepôt commence à traiter les instructions SQL une fois que 50% ou plus des ressources de calcul demandées ont été mises en service avec succès.

Les crédits sont facturés à la seconde pendant le fonctionnement de l’entrepôt, avec un minimum d’une minute chaque fois que l’entrepôt reprend. Toutefois, la consommation de crédit est indiquée par tranches de 60 minutes (c.-à-d. par heure).

Note

Un entrepôt doit fonctionner et être l’entrepôt actuel pour la session (c’est-à-dire en cours d’utilisation) pour traiter les instructions SQL soumises au cours de la session. Pour plus d’informations, voir Utilisation d’un entrepôt dans cette rubrique.

Suspension d’un entrepôt

Un entrepôt en cours d’exécution peut être suspendu à tout moment, même pendant l’exécution d’instructions SQL. En suspendant un entrepôt, cet entrepôt arrête de consommer des crédits une fois toutes les ressources de calcul arrêtées.

Un entrepôt peut être suspendu via l’interface Web ou en utilisant SQL :

Snowsight

Sélectionnez Admin » Warehouses » <nom_entrepôt_démarré> » More options » Suspend

Classic Console

Sélectionnez Warehouses Warehouses tab » <nom_entrepôt_démarré> » Suspend

SQL

Exécutez une commande ALTER WAREHOUSE avec le mot-clé SUSPEND.

Lorsque vous suspendez un entrepôt, Snowflake ferme immédiatement toutes les ressources de calcul inactives de l’entrepôt, mais permet à toutes les ressources de calcul qui exécutent des instructions de continuer jusqu’à ce que les instructions aient abouti, moment auquel les ressources sont éteintes et le statut de l’entrepôt passe à « Suspendu ». Les ressources de calcul en attente d’arrêt sont considérées comme étant en mode « repos ».

Redimensionnement d’un entrepôt

Les dimensions d’un entrepôt peuvent être augmentées ou diminuées à tout moment, y compris pendant l’exécution et le traitement d’instructions.

Un entrepôt peut être redimensionné via l’interface Web ou en utilisant SQL :

Snowsight

Sélectionnez Admin » Warehouses » <nom_entrepôt> » More options » Edit

Classic Console

Sélectionnez Warehouses Warehouses tab » <nom_entrepôt> » Configure

SQL

Exécutez une commande ALTER WAREHOUSE avec SET WAREHOUSE_SIZE = ....

Le redimensionnement d’un entrepôt vers une taille plus grande est utile si les opérations effectuées par l’entrepôt pourront bénéficier de ressources de calcul supplémentaires et :

  • Améliorer les performances des grandes requêtes complexes par rapport à de grands jeux de données.

  • Améliorer les performances lors du chargement et du déchargement de grandes quantités de données.

Conséquences du redimensionnement d’un entrepôt en cours d’exécution

Le redimensionnement d’un entrepôt en cours d’exécution ajoute ou supprime des ressources de calcul pour chaque cluster de l’entrepôt. Toutes les règles d’utilisation et de crédit associées au démarrage ou à la suspension d’un entrepôt s’appliquent au redimensionnement d’un entrepôt démarré, par exemple :

  • Les ressources de calcul ajoutées à un entrepôt commencent à utiliser des crédits lorsqu’elles sont mises en service. Cependant, les ressources de calcul supplémentaires ne commencent pas à exécuter des instructions tant qu’elles ne sont pas toutes mises en service, à moins que certaines des ressources n’arrivent pas à être mises en route.

  • Les ressources de calcul ne sont retirées d’un entrepôt que lorsqu’elles ne sont plus utilisées pour exécuter les instructions actuelles.

Redimensionner un entrepôt n’a aucune conséquence sur les instructions actuellement exécutées par l’entrepôt. En cas de redimensionnement vers une taille supérieure, les nouvelles ressources de calcul, une fois entièrement provisionnées, ne sont utilisées que pour exécuter les instructions qui sont déjà dans la file d’attente de l’entrepôt, ainsi que toutes les instructions futures soumises à l’entrepôt.

Astuce

Pour vérifier que les ressources de calcul supplémentaires de votre entrepôt ont été entièrement provisionnées, ajoutez le paramètre WAIT_FOR_COMPLETION à la commande ALTER WAREHOUSE. Vous pouvez également utiliser SHOW WAREHOUSES pour vérifier son state.

Effets du redimensionnement d’un entrepôt suspendu

Redimensionner un entrepôt suspendu ne met pas en marche de nouvelles ressources de calcul pour l’entrepôt. Cela demande simplement à Snowflake de mettre en service les ressources de calcul supplémentaires lors de la prochaine reprise de l’entrepôt, après quoi toutes les règles d’utilisation et de crédit associées au démarrage d’un entrepôt s’appliquent.

Utilisation d’un entrepôt

Pour exécuter une requête ou une instruction DML dans Snowflake, un entrepôt doit être en cours d’exécution et il doit être spécifié comme l’entrepôt actuel pour la session dans laquelle la requête/l’instruction est soumise.

Une session Snowflake ne peut avoir qu’un seul entrepôt actuel à la fois. L’entrepôt actuel de la session peut être spécifié ou modifié à tout moment via la commande USE WAREHOUSE.

Une fois qu’un entrepôt en cours d’exécution a été défini comme étant l’entrepôt actuel pour la session, les requêtes et instructions DML soumises au cours de la session sont traitées par l’entrepôt. Dans les pages History History tab et Worksheets Worksheet tab de l”Classic Console, vous pouvez voir l’entrepôt utilisé pour traiter chaque requête/instruction.

Délégation de la gestion des entrepôts

Par défaut, le rôle ACCOUNTADMIN permet de modifier, de suspendre, de décrire et d’effectuer d’autres opérations sur tous les entrepôts du compte.

Si vous devez déléguer ces capacités à un rôle personnalisé de votre compte, vous pouvez utiliser la commande GRANT <privilèges> pour accorder le privilège MANAGE WAREHOUSES à ce rôle. L’attribution du privilège MANAGE WAREHOUSES équivaut à l’attribution des privilèges MODIFY, MONITOR et OPERATE sur tous les entrepôts du compte.

Les exemples suivants montrent comment vous pouvez déléguer la capacité de gérer des entrepôts à un rôle personnalisé nommé manage_wh_role. L’exemple utilise manage_wh_role pour apporter des modifications à l’entrepôt test_wh, qui appartient à un autre rôle (create_wh_role).

Créez un nouveau rôle qui créera et possédera un nouvel entrepôt, et accordez le privilège CREATE WAREHOUSE à ce rôle :

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

Créez un deuxième rôle qui gérera tous les entrepôts du compte et accordez-lui le privilège 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

En utilisant le rôle create_wh_role, créez un nouvel entrepôt :

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

Changez le rôle actuel en manage_wh_role :

USE ROLE manage_whs_role;
Copy

Bien que le rôle manage_wh_role ne possède pas le rôle test_wh, ce rôle possède le privilège MANAGE WAREHOUSES, ce qui signifie que vous pouvez :

  • Suspendre et reprendre l’entrepôt :

    ALTER WAREHOUSE test_wh SUSPEND;
    ALTER WAREHOUSE test_wh RESUME;
    
    Copy
  • Modifier la taille de l’entrepôt :

    ALTER WAREHOUSE test_wh SET WAREHOUSE_SIZE = SMALL;
    
    Copy
  • Décrire l’entrepôt :

    DESC WAREHOUSE test_wh;
    
    Copy