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
- 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
- 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
- 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
- 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 et Worksheets
de l’interface Web Snowflake, vous pouvez voir l’entrepôt utilisé pour traiter chaque requête/instruction.