Entrepôts multi-clusters

Les entrepôts multi-clusters vous permettent de mettre à l’échelle les ressources de calcul pour répondre aux besoins des utilisateurs et aux besoins de simultanéité des requêtes en fonction de leur évolution, par exemple pendant les heures de pointe et en dehors.

Dans ce chapitre :

Qu’est-ce qu’un entrepôt multi-clusters ?

Par défaut, un entrepôt virtuel se compose d’un seul cluster de serveurs qui détermine les ressources totales dont dispose l’entrepôt pour exécuter les requêtes. Au fur et à mesure que les requêtes sont soumises à un entrepôt, l’entrepôt alloue des ressources à chaque requête et commence à exécuter les requêtes. Si les ressources disponibles ne sont pas suffisantes pour exécuter toutes les requêtes soumises à l’entrepôt, Snowflake met les requêtes supplémentaires en file d’attente jusqu’à ce que les ressources nécessaires soient disponibles.

Avec les entrepôts multi-clusters, Snowflake permet l’attribution, statique ou dynamique, d’un plus grand ensemble de ressources à chaque entrepôt. Un entrepôt multi-clusters se définit en spécifiant les propriétés suivantes :

  • Nombre maximum de clusters de serveurs, supérieur à 1 (jusqu’à 10).

  • Nombre minimum de clusters de serveurs, égal ou inférieur au nombre maximum (jusqu’à 10).

De plus, les entrepôts multi-clusters prennent tous en charge les mêmes propriétés et actions que les entrepôts mono-clusters, y compris :

  • La spécification d’une taille d’entrepôt.

  • Le redimensionnement d’un entrepôt à tout moment.

  • La suspension automatique d’un entrepôt en cours d’exécution pour cause d’inactivité. Notez que cela ne s’applique pas aux clusters individuels, mais à l’entrepôt entier.

  • La reprise automatique d’un entrepôt mis en suspens lorsque de nouvelles requêtes sont soumises.

Maximisé vs. Mise à l’échelle automatique

Vous pouvez choisir d’exécuter un entrepôt multi-clusters sous l’un des modes suivants :

Maximisé

Ce mode s’active en spécifiant la même valeur pour les clusters maximum et minimum (notez que la valeur spécifiée doit être supérieure à 1). Dans ce mode, lorsque l’entrepôt est démarré, Snowflake démarre tous les clusters afin que le maximum de ressources soient disponibles pendant que l’entrepôt fonctionne.

Ce mode est efficace pour contrôler statiquement les ressources disponibles (c’est-à-dire les serveurs), en particulier si vous avez un grand nombre de sessions utilisateur et/ou de requêtes simultanées, et que les nombres ne fluctuent pas de manière significative.

Mise à l’échelle automatique

Ce mode s’active en spécifiant des valeurs différentes pour les clusters maximum et minimum. Dans ce mode, Snowflake démarre et arrête les clusters selon les besoins pour gérer dynamiquement la charge sur l’entrepôt :

  • Au fur et à mesure que le nombre de sessions utilisateur et/ou de requêtes simultanées pour l’entrepôt augmente, et que les requêtes commencent à se mettre en file d’attente en raison de ressources insuffisantes, Snowflake lance automatiquement des clusters supplémentaires, jusqu’au nombre maximum défini pour l’entrepôt.

  • De même, à mesure que la charge sur l’entrepôt diminue, Snowflake arrête automatiquement les clusters pour réduire le nombre de serveurs en fonctionnement et, par conséquent, le nombre de crédits utilisés par l’entrepôt.

Pour aider à contrôler l’utilisation des crédits en mode Mise à l’échelle automatique, Snowflake fournit une propriété, SCALING_POLICY, qui détermine la politique de mise à l’échelle à utiliser lors du démarrage ou de la fermeture automatique de clusters supplémentaires. Pour plus d’informations, voir Définition de la politique de mise à l’échelle d’un entrepôt multi-clusters (dans ce chapitre).

Astuce

Lors de la détermination des clusters maximum et minimum à utiliser pour un entrepôt, débutez par le mode Mise à l’échelle automatique et commencez petit (par ex. maximum = 2 ou 3, minimum = 1). Au fur et à mesure que vous suivez les fluctuations de la charge de votre entrepôt dans le temps, vous pouvez augmenter les clusters maximum et minimum jusqu’à ce que vous déterminiez les nombres qui supportent le mieux les limites supérieure et inférieure de votre simultanéité d’utilisateur/de requête.

Taille multi-clusters et utilisation du crédit

Le nombre de serveurs dans chaque cluster est déterminé par la taille de l’entrepôt :

  • Le nombre total de serveurs pour l’entrepôt se calcule en multipliant la taille de l’entrepôt par le nombre maximum de clusters. Ceci indique également le nombre maximum de crédits consommés par l’entrepôt par heure complète d’utilisation (c-à-d. si tous les clusters fonctionnent pendant l’heure).

    Par exemple, le nombre maximum de crédits consommés par heure pour un entrepôt de taille moyenne (4 serveurs par cluster) avec 3 clusters est de 12 crédits.

  • Si un entrepôt multi-clusters est redimensionné, la nouvelle taille s’applique à tous les clusters de l’entrepôt, y compris les clusters en cours d’exécution et les clusters qui sont démarrés après le redimensionnement de l’entrepôt.

Le nombre réel de crédits consommés par heure dépend du nombre de clusters en cours d’exécution pendant chaque heure de fonctionnement de l’entrepôt. Pour plus de détails, voir Exemples d’utilisation de crédit multi-clusters (dans ce chapitre).

Avantages des entrepôts multi-clusters

Avec un entrepôt standard à cluster unique, si votre charge utilisateur/requête augmente au point où vous avez besoin de plus de ressources de calcul :

  1. Vous devez soit augmenter la taille de l’entrepôt soit créer des entrepôts supplémentaires, et rediriger explicitement les utilisateurs/requêtes supplémentaires vers ces entrepôts.

  2. Ensuite, lorsque les ressources ne sont plus nécessaires, vous devez réduire manuellement le plus grand entrepôt ou suspendre les entrepôts supplémentaires pour conserver les crédits.

En revanche, un entrepôt multi-clusters permet à un plus grand nombre d’utilisateurs de se connecter à un entrepôt de même taille. En outre :

  • En mode Mise à l’échelle automatique, un entrepôt multi-clusters élimine la nécessité de redimensionner l’entrepôt, ou de démarrer et d’arrêter les entrepôts supplémentaires pour gérer des charges de travail fluctuantes. Snowflake démarre et arrête automatiquement les clusters supplémentaires selon les besoins.

  • En mode Maximisé, vous pouvez contrôler la capacité de l’entrepôt en augmentant ou en diminuant le nombre de clusters selon les besoins.

Astuce

Les entrepôts multi-clusters sont conseillés pour mettre à l’échelle les ressources afin d’améliorer la simultanéité pour les utilisateurs/requêtes. Ils ne sont pas aussi bénéfiques pour améliorer les performances de requêtes lentes ou le chargement des données. Pour ces types d’opérations, redimensionner l’entrepôt offre plus d’avantages.

Exemples d’utilisation de crédit multi-clusters

Les quatre exemples suivants illustrent l’utilisation du crédit pour un entrepôt multi-clusters.

Note

Par souci de simplicité, tous ces exemples illustrent l’utilisation de crédit par incréments de 1 heure, 30 minutes et 15 minutes. Dans un scénario réel, avec une facturation à la seconde, l’utilisation réelle du crédit contiendrait des montants fractionnels basés sur le nombre de secondes d’exécution de chaque cluster de serveurs.

Exemple 1 : Maximisé (2 heures)

Dans cet exemple, un entrepôt de taille moyenne (4 serveurs par cluster) avec 3 clusters fonctionne en mode Maximisé pendant 2 heures :

Cluster 1

Cluster 2

Cluster 3

Total des crédits

1re heure

4

4

4

12

2e heure

4

4

4

12

Total des crédits

8

8

8

24

Exemple 2 : Mise à l’échelle automatique (2 heures)

Dans cet exemple, un entrepôt de taille moyenne (4 serveurs par cluster) avec 3 clusters fonctionne en mode Mise à l’échelle automatique pendant 2 heures :

  • Le cluster 1 fonctionne en continu.

  • Le cluster 2 fonctionne en continu pendant la deuxième heure seulement.

  • Le cluster 3 fonctionne pendant 30 minutes pendant la deuxième heure.

Cluster 1

Cluster 2

Cluster 3

Total des crédits

1re heure

4

0

0

4

2e heure

4

4

2

10

Total des crédits

8

4

2

14

Exemple 3 : Mise à l’échelle automatique (3 heures)

Dans cet exemple, un entrepôt de taille moyenne (4 serveurs par cluster) avec 3 clusters fonctionne en mode Mise à l’échelle automatique pendant 3 heures :

  • Le cluster 1 fonctionne en continu.

  • Le cluster 2 fonctionne en continu pendant toute la deuxième heure et 30 minutes pendant la troisième heure.

  • Le cluster 3 fonctionne pendant 30 minutes dans la troisième heure.

Cluster 1

Cluster 2

Cluster 3

Total des crédits

1re heure

4

0

0

4

2e heure

4

4

0

8

3e heure

4

2

2

8

Total des crédits

12

6

2

20

Exemple 4 : Mise à l’échelle automatique (3 heures) avec redimensionnement

Dans cet exemple, le même entrepôt de l’exemple 3 fonctionne en mode Mise à l’échelle automatique pendant 3 heures avec un redimensionnement depuis la taille Medium (4 serveurs par cluster) vers la taille Large (8 serveurs par cluster) :

  • Le cluster 1 fonctionne en continu.

  • Le cluster 2 fonctionne en continu pendant les deuxième et troisième heures.

  • L’entrepôt est redimensionné de la taille Medium à la taille Large à 1h30.

  • Le cluster 3 fonctionne pendant 15 minutes dans la troisième heure.

Cluster 1

Cluster 2

Cluster 3

Total des crédits

1re heure

4

0

0

4

2e heure

4+2

4+2

0

12

3e heure

8

8

2

18

Total des crédits

18

14

2

34

Création d’un entrepôt multi-clusters

Vous pouvez créer un entrepôt multi-clusters via l’interface Web ou en utilisant SQL :

Interface Web

Cliquez sur Warehouses Warehouses tab » Create :

  1. Dans le champ Maximum Clusters, sélectionnez une valeur supérieure à 1.

  2. Dans le champ Minimum Clusters, sélectionnez éventuellement une valeur supérieure à 1.

  3. Saisissez d’autres informations pour l’entrepôt, si nécessaire, et cliquez sur Finish.

SQL

Exécutez une commande CREATE WAREHOUSE avec :

  • MAX_CLUSTER_COUNT défini sur une valeur supérieure à 1.

  • MIN_CLUSTER_COUNT (facultatif) défini sur une valeur supérieure à 1.

Pour afficher les informations sur les entrepôts multi-clusters que vous créez :

Interface Web

Cliquez sur Warehouses Warehouses tab

La colonne Clusters affiche les clusters minimum et maximum pour chaque entrepôt, ainsi que le nombre de clusters en cours d’exécution si l’entrepôt est démarré.

SQL

Exécutez une commande SHOW WAREHOUSES.

La sortie comprend trois colonnes (min_cluster_count, max_cluster_count, started_clusters_column) qui affichent les mêmes informations que celles fournies dans la colonne Clusters de l’interface Web.

Toutes les autres tâches pour les entrepôts multi-clusters (à l’exception des autres tâches décrites dans ce chapitre) sont identiques aux entrepôts mono-cluster

Définition de la politique de mise à l’échelle d’un entrepôt multi-clusters

Pour aider à contrôler les crédits consommés par un entrepôt multi-clusters fonctionnant en mode Mise à l’échelle automatique, Snowflake fournit des politiques de mise à l’échelle qui sont utilisées pour déterminer quand démarrer ou arrêter un cluster.

La politique de mise à l’échelle d’un entrepôt multi-clusters ne s’applique que s’il fonctionne en mode Mise à l’échelle automatique. En mode Maximisé, tous les clusters fonctionnent simultanément, il n’est donc pas nécessaire de démarrer ou d’arrêter les clusters individuels.

Snowflake prend en charge les politiques de mise à l’échelle suivantes :

Politique

Description

Démarrage du cluster…

Arrêt du cluster…

Standard (par défaut)

Empêche/minimise les files d’attente en favorisant le démarrage de clusters supplémentaires plutôt que la conservation de crédits.

Immédiatement quand une requête est mise en file d’attente ou quand le système détecte qu’il y a une requête de plus que ce que les clusters en cours d’exécution peuvent exécuter.

Après 2 à 3 contrôles consécutifs réussis (effectués à intervalles d’une minute) qui déterminent si la charge sur le cluster le moins chargé peut être redistribuée aux autres clusters sans que le cluster ne soit à nouveau mis en rotation.

Economy

Conserve les crédits en favorisant le maintien des clusters en cours d’exécution à pleine charge plutôt que de lancer des clusters supplémentaires, ce qui peut entraîner des files d’attente et prendre plus de temps pour compléter les requêtes.

Seulement si le système estime qu’il y a assez de requêtes pour garder le cluster occupé pendant au moins 6 minutes.

Après 5 à 6 contrôles consécutifs réussis (effectués à intervalles d’une minute) qui déterminent si la charge sur le cluster le moins chargé peut être redistribuée aux autres clusters sans que le cluster ne soit à nouveau mis en rotation.

Note

Une troisième politique de mise à l’échelle, Legacy, a été prévue pour la rétrocompatibilité. Contrairement aux autres politiques, elle utilise une approche statique fondée sur la durée pendant laquelle un cluster est actif/inactif.

« Legacy » est désormais obsolète/supprimé. Tous les entrepôts qui utilisaient la stratégie Legacy utilisent désormais la stratégie standard par défaut.

La politique de mise à l’échelle d’un entrepôt multi-clusters peut être définie lors de la création de l’entrepôt ou à tout moment par la suite, soit via l’interface Web soit en utilisant SQL :

Interface Web

Cliquez sur :

  • Warehouses Warehouses tab » Create ou

  • Warehouses Warehouses tab » <nom_entrepôt> » Configure

Dans le champ Scaling Policy, sélectionnez la valeur souhaitée dans la liste déroulante.

SQL

Exécutez une commande CREATE WAREHOUSE ou ALTER WAREHOUSE avec SCALING_POLICY définie sur la valeur désirée.

Par exemple, dans SQL :

ALTER WAREHOUSE mywh SET SCALING_POLICY = 'ECONOMY';

Augmentation ou diminution du nombre de clusters pour un entrepôt multi-clusters

Vous pouvez augmenter ou réduire le nombre de clusters d’un entrepôt à tout moment, même pendant que l’entrepôt est en cours d’exécution et qu’il exécute des instructions. Le nombre de clusters d’un entrepôt peut être augmenté ou diminué via l’interface Web ou SQL :

Interface Web

Cliquez sur Warehouses Warehouses tab » <nom_entrepôt> » Configure

SQL

Exécutez une commande ALTER WAREHOUSE.

L’effet de la modification des clusters maximum et minimum pour un entrepôt en cours d’exécution dépend du mode d’exécution (Maximisé ou Mise à l’échelle automatique) :

  • Maximisé :

    ↑ maximum et minimum

    Le nombre de clusters indiqué démarre immédiatement.

    ↓ maximum et minimum

    Le nombre de clusters indiqué qui s’arrête après avoir fini d’exécuter les instructions et que la période de suspension automatique est écoulée.

  • Mise à l’échelle automatique :

    ↑ max

    Si new_max_clusters > running_clusters, aucun changement jusqu’à ce que des clusters supplémentaires soient nécessaires.

    ↓ max

    Si new_max_clusters < running_clusters, les clusters en excès s’arrêtent lorsqu’ils ont fini d’exécuter les instructions et que les conditions de la politique de mise à l’échelle sont remplies.

    ↑ min

    Si new_min_clusters > running_clusters, les clusters supplémentaires sont démarrés automatiquement pour atteindre le minimum.

    ↓ min

    Si new_min_clusters < running_clusters, les clusters en excès s’arrêtent lorsqu’ils ont fini d’exécuter les instructions et que les conditions de la politique de mise à l’échelle sont remplies.

Surveillance des entrepôts multi-clusters

Vous pouvez surveiller l’utilisation des entrepôts multi-clusters via l’interface Web :

Interface Web

Cliquez sur History History tab ou Worksheets Worksheet tab

Ces pages comprennent une colonne, Cluster Number, qui spécifie le cluster utilisé pour exécuter les instructions soumises à chaque entrepôt.