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 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 maximum de clusters, supérieur à 1 (jusqu’à 10).
Nombre minimum de clusters, é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 multi-clusters entier.
La reprise automatique d’un entrepôt virtuel mis en suspens lorsque de nouvelles requêtes sont soumises.
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).
Astuce
Pour créer un entrepôt multi-clusters, consultez Création d’un entrepôt multi-clusters (dans cette rubrique).
Remarques :
Pour les entrepôts multi-clusters, le nombre maximum de clusters dans le champ Maximum Clusters (Interface Web) ou pour la propriété MAX_CLUSTER_COUNT (SQL) doit être supérieur à 1.
Pour les entrepôts à un seul cluster, les nombres maximum et minimum de clusters doivent être tous deux égaux à 1.
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.
Lors de la détermination du nombre maximum et minimum de clusters à 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 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).
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 :
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.
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 de taille moyenne 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 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 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 multi-clusters via l’interface Web ou en utilisant SQL :
- Interface Web:
Cliquez sur Warehouses » Create :
Dans le champ Maximum Clusters, sélectionnez une valeur supérieure à 1.
Dans le champ Minimum Clusters, sélectionnez éventuellement une valeur supérieure à 1.
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 voir les informations sur les entrepôts multi-clusters que vous créez :
- Classic Console:
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 |
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 de clusters supplémentaires plutôt que la conservation de crédits. |
Le premier cluster 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 clusters en cours d’exécution peuvent exécuter. Chaque cluster successif attend 20 secondes avant de démarrer après le démarrage du précédent. Par exemple, si votre entrepôt est configuré avec un maximum de 10 clusters, plus de 200 secondes peuvent être nécessaires pour démarrer les 10 clusters. |
Après deux à trois 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 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 entrepôt 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 :
- Classic Console:
Cliquez sur :
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 d’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 :
- Classic Console:
- 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 :