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 :

Interface Web

Cliquez sur 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 tous les serveurs sont mis 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 tous les serveurs pour l’entrepôt.

Démarrage/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 :

Interface Web

Cliquez sur 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 serveurs 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 tous les serveurs sont provisionnés pour l’entrepôt.

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

    • Une fois que les serveurs restants ont été provisionnés, l’entrepôt commence à consommer des crédits pour tous les serveurs demandés.

  • 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 serveurs qui fournissent les ressources de calcul de l’entrepôt.

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

    • Si l’un des serveurs de l’entrepôt n’arrive pas à être mis en service durant le démarrage, Snowflake tente de déboguer le/les serveur(s) problématique(s).

    • Pendant le processus de réparation, l’entrepôt commence à traiter les instructions SQL une fois que 50% ou plus des serveurs demandés ont été mis 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 être lancé/exécuté pour traiter des instructions SQL soumises dans une session. Toutefois, l’entrepôt doit également être spécifié comme l’entrepôt actuel pour la session. Pour plus d’informations, voir Utilisation d’un entrepôt dans ce chapitre.

Suspension d’un entrepôt

Un entrepôt en cours d’exécution (c-à-d. « Démarré ») peut être suspendu à tout moment, même pendant l’exécution des instructions SQL. En suspendant un entrepôt, cet entrepôt arrête de consommer des crédits une fois tous les serveurs arrêtés.

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

Interface Web

Cliquez sur 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 tous les serveurs inactifs de l’entrepôt, mais permet à tous les serveurs qui exécutent des instructions de continuer jusqu’à ce que les instructions aient abouti, moment auquel les serveurs sont éteints et le statut de l’entrepôt passe à « Suspendu ». Les serveurs en attente d’arrêt sont considérés 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 :

Interface Web

Cliquez sur 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 serveurs 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 serveurs ajoutés à un entrepôt commencent à utiliser des crédits lorsqu’ils sont mis en service. Cependant, les serveurs supplémentaires ne commencent pas à exécuter des instructions tant qu’ils ne sont pas tous mis en service, à moins que certains des serveurs n’arrivent pas à être mis en route.

  • Les serveurs ne sont retirés d’un entrepôt que lorsqu’ils ne sont plus utilisés 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 nouveaux serveurs ne sont utilisés 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.

Effets du redimensionnement d’un entrepôt suspendu

Redimensionner un entrepôt suspendu ne met pas en marche de nouveaux serveurs pour l’entrepôt. Cela demande simplement à Snowflake de mettre en service les serveurs 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 d’une 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 une 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’interface Web Snowflake, vous pouvez voir l’entrepôt utilisé pour traiter chaque requête/instruction.