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, la taille d’un entrepôt virtuel détermine les ressources de calcul disponibles pour l’entrepôt pour l’exécution des requêtes. Chaque entrepôt est un ensemble de ressources de calcul. 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 prend en charge l’allocation, statique ou dynamique, d’entrepôts supplémentaires afin de mettre à disposition un plus grand pool de ressources de calcul. Un entrepôt multi-clusters se définit en spécifiant les propriétés suivantes :

  • Nombre maximum d’entrepôts, supérieur à 1 (jusqu’à 10).

  • Nombre minimum d’entrepôts, é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 simples, 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 entrepôts individuels, mais à l’entrepôt multi-clusters entier.

  • La reprise automatique d’un entrepôt virtuel 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 le nombre maximum et d’entrepôts (notez que la valeur spécifiée doit être supérieure à 1). Dans ce mode, lorsque l’entrepôt multi-clusters est démarré, Snowflake démarre tous les entrepôts afin que le maximum de ressources soient disponibles pendant que l’entrepôt multi-clusters fonctionne.

Ce mode est efficace pour contrôler statiquement les ressources de calcul disponibles, 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 le nombre maximum et minimum d’entrepôts. Dans ce mode, Snowflake démarre et arrête les entrepôts selon les besoins pour gérer dynamiquement la charge sur l’entrepôt multi-clusters :

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

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

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 d’entrepôts 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 du nombre maximum et minimum d’entrepôts à utiliser pour un entrepôt multi-clusters, 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 nombres maximum et minimum d’entrepôts 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 d’entrepôts dans chaque cluster est déterminé par la taille de l’entrepôt multi-clusters :

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

    Par exemple, le nombre maximum de crédits consommés par heure pour un entrepôt multi-cluster de taille moyenne avec 3 entrepôts est de 12 crédits.

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

Le nombre réel de crédits consommés par heure dépend du nombre d’entrepôts en cours d’exécution pendant chaque heure de fonctionnement de l’entrepôt multi-clusters. 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 entrepôts supplémentaires selon les besoins.

  • En mode Maximisé, vous pouvez contrôler la capacité de l’entrepôt multi-clusters en augmentant ou en diminuant le nombre d’entrepôts 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. Voir Utilisation du crédit d’entrepôt virtuel pour le nombre de crédits facturés par heure complète selon la taille de l’entrepôt.

Note

Par souci de simplicité, tous ces exemples illustrent l’utilisation du 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 du crédit réelle contiendrait des montants fractionnels basés sur le nombre de secondes d’exécution de chaque entrepôt.

Exemple 1 : maximisé (2 heures)

Dans cet exemple, un entrepôt multi-clusters de taille moyenne avec 3 entrepôts fonctionne en mode Maximisé pendant 2 heures :

Entrepôt 1

Entrepôt 2

Entrepôt 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 multi-clusters de taille moyenne avec 3 entrepôts fonctionne en mode Mise à l’échelle automatique pendant 2 heures :

  • L’entrepôt 1 fonctionne en continu.

  • L’entrepôt 2 fonctionne en continu pendant la deuxième heure seulement.

  • L’entrepôt 3 fonctionne pendant 30 minutes pendant la deuxième heure.

Entrepôt 1

Entrepôt 2

Entrepôt 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 multi-clusters de taille moyenne avec 3 entrepôts fonctionne en mode Mise à l’échelle automatique pendant 3 heures :

  • L’entrepôt 1 fonctionne en continu.

  • L’entrepôt 2 fonctionne en continu pendant toute la deuxième heure et 30 minutes pendant la troisième heure.

  • L’entrepôt 3 fonctionne pendant 30 minutes dans la troisième heure.

Entrepôt 1

Entrepôt 2

Entrepôt 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 vers la taille Large :

  • L’entrepôt 1 fonctionne en continu.

  • L’entrepôt 2 fonctionne en continu pendant les deuxième et troisième heures.

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

  • L’entrepôt 3 fonctionne pendant 15 minutes dans la troisième heure.

Entrepôt 1

Entrepôt 2

Entrepôt 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 :

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

Interface Web

Cliquez sur Warehouses Warehouses tab

La colonne Clusters affiche les entrepôts minimum et maximum pour chaque entrepôt multi-clusters, ainsi que le nombre d’entrepôts en cours d’exécution si l’entrepôt multi-clusters 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 entrepôt.

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 entrepôts fonctionnent simultanément, il n’est donc pas nécessaire de démarrer ou d’arrêter les entrepôts individuels.

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

Politique

Description

L’entrepôt démarre…

L’entrepôt s’arrête…

Standard (par défaut)

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

Le premier entrepôt démarre 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 entrepôts en cours d’exécution peuvent exécuter.

Chaque entrepôt successif attend 20 secondes avant de démarrer après le démarrage du précédent. Par exemple, si votre entrepôt multi-clusters est configuré avec un maximum de 10 entrepôts, plus de 200 secondes peuvent être nécessaires pour démarrer les 10 entrepôts.

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

Economy

Conserve les crédits en favorisant le maintien des entrepôts en cours d’exécution à pleine charge plutôt que de lancer des entrepôts 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 l’entrepôt occupé pendant au moins 6 minutes.

Après cinq à six contrôles consécutifs réussis (effectués à intervalles d’une minute) qui déterminent si la charge sur l’entrepôt le moins chargé peut être redistribuée aux autres entrepôts sans que l’entrepôt 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 entrepôt est actif/inactif.

« Legacy » est désormais obsolète/supprimé. Tous les entrepôts multi-clusters 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 d’entrepôts pour un entrepôt multi-clusters

Vous pouvez augmenter ou réduire le nombre d’entrepôts d’un entrepôt multi-clusters à tout moment, même pendant que l’entrepôt est en cours d’exécution et qu’il exécute des instructions. Le nombre d’entrepôts d’un entrepôt multi-clusters 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 entrepôts maximum et minimum pour un entrepôt multi-clusters en cours d’exécution dépend du mode d’exécution (Maximisé ou Mise à l’échelle automatique) :

  • Maximisé :

    ↑ maximum et minimum

    Un nombre spécifié d’entrepôts commence immédiatement.

    ↓ maximum et minimum

    Le nombre d’entrepôts 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 entrepôts supplémentaires soient nécessaires.

    ↓ max

    Si new_max_clusters < running_clusters, les entrepôts 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 entrepôts supplémentaires sont démarrés automatiquement pour atteindre le minimum.

    ↓ min

    Si new_min_clusters < running_clusters, les entrepôts 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 l’entrepôt utilisé pour exécuter les instructions soumises à chaque entrepôt multi-clusters.