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.

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

Par défaut, un entrepôt virtuel se compose d’un seul cluster de ressources de calcul 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 prend en charge l’allocation, statique ou dynamique, de clusters 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 maximal de clusters : supérieur à 1. La valeur la plus élevée que vous pouvez spécifier dépend de la taille de l’entrepôt. Pour connaître la limite supérieure du nombre de clusters pour chaque taille d’entrepôt, voir Limite supérieure du nombre de clusters pour un entrepôt multicluster (dans cette rubrique).

  • Nombre minimal de clusters : égal ou inférieur au maximum.

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 multi-clusters entier.

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

Limite supérieure du nombre de clusters pour un entrepôt multicluster

Le nombre maximal de clusters pour un entrepôt multicluster dépend de la taille de l’entrepôt. Plus la taille de l’entrepôt est grande, moins la limite du nombre de clusters est élevée. Le tableau suivant indique le nombre maximal de clusters pour chaque taille d’entrepôt :

Taille d’entrepôt

Nombre maximal de clusters autorisé

Nombre maximal de clusters par défaut

XSMALL

300

10

SMALL

300

10

MEDIUM

300

10

LARGE

160

10

XLARGE

80

10

2XLARGE

40

10

3XLARGE

20

10

4XLARGE

10

10

5XLARGE

10

10

6XLARGE

10

10

Note

Actuellement, Snowsight prend en charge la mise à jour de la valeur MAX_CLUSTER_COUNT jusqu’à un maximum de 10 clusters. Pour spécifier une MAX_CLUSTER_COUNT supérieure à 10, utilisez la commande CREATE WAREHOUSE ou ALTER WAREHOUSE dans SQL.

Mise à échelle maximisée ou 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 minimum de clusters (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 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 de clusters. 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 clusters 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).

Pour créer un entrepôt multi-clusters, consultez Création d’un entrepôt multi-clusters (dans cette rubrique).

  • Pour le mode Mise à l’échelle automatique, le nombre maximum de clusters doit être supérieur au nombre minimum de clusters.

  • Pour le mode maximisé, le nombre maximal de clusters doit être égal au nombre minimal de clusters.

Astuce

Lorsque vous déterminez les nombres maximal et minimal de clusters à utiliser pour un entrepôt multicluster, commencez en mode Mise à l’échelle automatique et avec de petites valeurs (par exemple, 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 de clusters 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

La quantité de ressources de calcul dans chaque cluster est déterminée par la taille de l’entrepôt :

  • Le nombre total de clusters pour l’entrepôt multi-clusters 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 multi-cluster de taille moyenne 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 multi-clusters.

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).

Astuce

Si vous utilisez Query Acceleration Service (QAS) pour un entrepôt multicluster, envisagez de régler le facteur d’échelle de QAS plus haut que pour un entrepôt monocluster. Cela permet d’appliquer les optimisations de QAS à tous les clusters de l’entrepôt. Pour plus d’informations, voir Ajustement du facteur d’échelle.

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 multi-clusters 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. 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 cluster.

Exemple 1 : maximisé (2 heures)

Dans cet exemple, un entrepôt standard de taille Medium équipé de 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 standard de taille Medium 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 standard de taille Medium 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 à é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 :

  • 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 multicluster dans Snowsight ou en utilisant SQL :

Snowsight:

Cliquez sur Admin » Warehouses » + Warehouse

  1. Développez Advanced Options.

  2. Cochez la case Multi-cluster Warehouse.

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

    Note

    Actuellement, la valeur la plus élevée que vous pouvez choisir dans Snowsight est 10. Les tailles maximales indiquées dans Limite supérieure du nombre de clusters pour un entrepôt multicluster s’appliquent uniquement aux commandes CREATE WAREHOUSE et ALTER WAREHOUSE dans SQL.

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

  5. Saisissez d’autres informations pour l’entrepôt, si nécessaire, et cliquez sur Create Warehouse.

SQL:

Exécutez une commande CREATE WAREHOUSE avec :

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

Snowsight:

Cliquez sur Admin » Warehouses.

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é. Vous pouvez trier la colonne Clusters par ordre décroissant pour faire apparaître les entrepôts multicluster en tête de liste.

Classic Console:

Cliquez sur Warehouses Onglet Entrepôts

SQL:

Exécutez une commande SHOW WAREHOUSES.

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

Astuce

Si la sortie de SHOW WAREHOUSES est difficile à lire en raison du grand nombre de colonnes qu’elle contient, vous pouvez la faire suivre d’une autre requête qui n’inclura que les colonnes souhaitées, ainsi que d’autres clauses de filtrage et de tri. Utilisez une requête comme celle qui suit en l’adaptant à vos besoins. Les noms des colonnes sont mis entre guillemets car ils sont sensibles à la casse dans la sortie de SHOW WAREHOUSES.

-- Must do the SHOW first to produce the full result set.
SHOW WAREHOUSES;
-- result_scan() helps to customize a report using the result set from the previous query.
SELECT "name", "state", "size", "max_cluster_count", "started_clusters", "type"
  FROM TABLE(result_scan(-1))
  WHERE "state" IN ('STARTED','SUSPENDED')
  ORDER BY "type" DESC, "name";
Copy

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

Afin de faciliter le contrôle des crédits consommés par un entrepôt multicluster fonctionnant en mode Mise à l’échelle automatique, Snowflake propose des politiques de mise à l’échelle. Snowflake utilise les politiques de mise à l’échelle pour déterminer comment ajuster la capacité de votre entrepôt multicluster en démarrant ou en arrêtant des clusters de manière individuelle pendant que l’entrepôt est en cours d’exécution. Vous pouvez spécifier une politique de mise à l’échelle pour que Snowflake donne la priorité à la réponse et au débit pour les requêtes dans cet entrepôt, ou pour minimiser les coûts pour cet 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 clusters fonctionnent simultanément, il n’est donc pas nécessaire de démarrer ou d’arrêter des clusters individuels.

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

Politique

Description

Un nouveau cluster démarre…

Un cluster au repos ou peu chargé s’arrête…

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.

Lorsqu’une requête est en file d’attente, ou si Snowflake estime que les clusters en cours d’exécution n’ont pas assez de ressources pour traiter des requêtes supplémentaires, Snowflake augmente le nombre de clusters dans l’entrepôt.

Pour les entrepôts dont le MAX_CLUSTER_COUNT est inférieur ou égal à 10, Snowflake démarre un cluster supplémentaire.

Pour les entrepôts dont le MAX_CLUSTER_COUNT est supérieur à 10, Snowflake démarre plusieurs clusters à la fois pour faire face aux augmentations rapides de la charge de travail.

Après une période prolongée de faible charge, Snowflake ferme un ou plusieurs des clusters les moins chargés lorsque les requêtes qui s’y exécutent se terminent. Lorsque le nombre de clusters est supérieur à 10, Snowflake peut arrêter plusieurs clusters à la fois. Lorsque le nombre de clusters est inférieur ou égal à 10, Snowflake arrête les clusters inactifs un par un.

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 une période prolongée de faible charge, Snowflake ferme un ou plusieurs des clusters les moins chargés lorsque les requêtes qui s’y exécutent se terminent. Lorsque le nombre de clusters est supérieur à 10, Snowflake peut arrêter plusieurs clusters à la fois. Lorsque le nombre de clusters est inférieur ou égal à 10, Snowflake arrête les clusters inactifs un par un.

Note

Une troisième politique de mise à l’échelle, Legacy, était auparavant fournie à des fins de compatibilité ascendante. La politique Legacy a été supprimée. Tous les entrepôts qui utilisaient la stratégie Legacy utilisent désormais la stratégie standard par défaut.

Vous pouvez paramétrer la politique de mise à l’échelle d’un entrepôt multicluster lors de sa création ou à tout moment par la suite, soit dans Snowsight, soit à l’aide de SQL :

Snowsight:

Lorsque vous sélectionnez Multi-cluster Warehouse sous Advanced Options dans la boîte de dialogue New Warehouse, vous pouvez sélectionner la politique de mise à l’échelle dans la liste déroulante Scaling Policy.

Pour un entrepôt multicluster existant, cliquez sur Admin » Warehouses. Sélectionnez ensuite Edit dans le menu More ().

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

Astuce

La liste déroulante Scaling Policy ne s’affiche que lorsque l’entrepôt sélectionné est multicluster et que le nombre maximal de clusters est supérieur au nombre minimal de clusters.

Classic Console:

Cliquez sur :

  • Warehouses Onglet Entrepôts » Create ou

  • Warehouses Onglet Entrepôts » <warehouse_name> » 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 :

CREATE WAREHOUSE mywh WITH MAX_CLUSTER_COUNT = 2, SCALING_POLICY = 'STANDARD';
ALTER WAREHOUSE mywh SET SCALING_POLICY = 'ECONOMY';
Copy

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

Vous pouvez augmenter ou réduire les nombres maximal et minimal de clusters spécifiés pour un entrepôt à tout moment, même lorsque cet entrepôt est en cours d’exécution et qu’il exécute des instructions. Vous pouvez ajuster les nombres maximal et minimal de clusters d’un entrepôt dans Snowsight ou en utilisant SQL :

Snowsight:

Cliquez sur Admin » Warehouses.

Cliquez sur le nom de l’entrepôt pour voir ses propriétés et l’historique de ses activités. Sélectionnez Edit dans le menu More (). Vous pouvez également désélectionner la case à cocher Multi-cluster Warehouse pour réinitialiser les nombres maximal et minimal de clusters à 1, transformant ainsi l’entrepôt en un entrepôt monocluster.

Classic Console:

Cliquez sur Warehouses Onglet Entrepôts » <warehouse_name> » Configure

SQL:

Exécutez une commande ALTER WAREHOUSE.

Note

Actuellement, Snowsight prend en charge la mise à jour de la valeur MAX_CLUSTER_COUNT jusqu’à un maximum de 10 clusters. Pour porter MAX_CLUSTER_COUNT au-delà de 10, utilisez la commande ALTER WAREHOUSE dans SQL.

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 :

Snowsight:

Cliquez sur Admin » Warehouses et sélectionnez un nom d’entrepôt.

Vous pouvez ainsi surveiller un entrepôt de manière précise, par exemple en visualisant les requêtes en cours d’exécution ou en file d’attente.

Vous pouvez également cliquer sur Monitoring » Query History. Cette page vous permet de voir l’activité des différents entrepôts de votre compte. Pour afficher l’activité d’un seul entrepôt, sélectionnez Warehouse dans le menu déroulant Filters. Choisissez ensuite un nom d’entrepôt dans la liste.

Classic Console:

Cliquez sur History Onglet Historique

Lorsque vous surveillez un entrepôt multicluster, vous pouvez voir toutes les requêtes que cet entrepôt a traitées. Pour chaque requête, vous pouvez voir des détails tels que la durée de la requête, le nombre d’octets analysés et le nombre de lignes renvoyées. Vous pouvez également voir le cluster utilisé pour l’exécution de chaque instruction traitée par l’entrepôt. Pour choisir les détails à afficher, sélectionnez les éléments Cluster Number, Duration, Rows, et ainsi de suite dans le menu déroulant Columns.