ALTER WAREHOUSE

Suspend ou reprend un entrepôt virtuel, ou annule toutes les requêtes (et autres instructions SQL) pour un entrepôt. Peut également être utilisé pour renommer ou définir/désactiver les propriétés d’un entrepôt.

Voir aussi :

CREATE WAREHOUSE , DESCRIBE WAREHOUSE , DROP WAREHOUSE , SHOW WAREHOUSES

Syntaxe

ALTER WAREHOUSE [ IF EXISTS ] [ <name> ] { SUSPEND | RESUME [ IF SUSPENDED ] }

ALTER WAREHOUSE [ IF EXISTS ] [ <name> ] ABORT ALL QUERIES

ALTER WAREHOUSE [ IF EXISTS ] <name> RENAME TO <new_name>

ALTER WAREHOUSE [ IF EXISTS ] <name> SET [ objectProperties ]
                                         [ objectParams ]

ALTER WAREHOUSE [ IF EXISTS ] <name> SET TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]

ALTER WAREHOUSE [ IF EXISTS ] <name> UNSET TAG <tag_name> [ , <tag_name> ... ]

ALTER WAREHOUSE [ IF EXISTS ] <name> UNSET { <property_name> | <param_name> } [ , ... ]
Copy

Où :

objectProperties ::=
  WAREHOUSE_TYPE = { STANDARD | 'SNOWPARK-OPTIMIZED' }
  WAREHOUSE_SIZE = { XSMALL | SMALL | MEDIUM | LARGE | XLARGE | XXLARGE | XXXLARGE | X4LARGE | X5LARGE | X6LARGE }
  WAIT_FOR_COMPLETION = { TRUE | FALSE }
  MAX_CLUSTER_COUNT = <num>
  MIN_CLUSTER_COUNT = <num>
  SCALING_POLICY = { STANDARD | ECONOMY }
  AUTO_SUSPEND = { <num> | NULL }
  AUTO_RESUME = { TRUE | FALSE }
  RESOURCE_MONITOR = <monitor_name>
  COMMENT = '<string_literal>'
  ENABLE_QUERY_ACCELERATION = { TRUE | FALSE }
  QUERY_ACCELERATION_MAX_SCALE_FACTOR = <num>
Copy
objectParams ::=
  MAX_CONCURRENCY_LEVEL = <num>
  STATEMENT_QUEUED_TIMEOUT_IN_SECONDS = <num>
  STATEMENT_TIMEOUT_IN_SECONDS = <num>
Copy

Propriétés/Paramètres

name

Spécifie l’identifiant de l’entrepôt à modifier. Si l’identificateur contient des espaces ou des caractères spéciaux, toute la chaîne doit être délimitée par des guillemets doubles. Les identificateurs entre guillemets doubles sont également sensibles à la casse.

Pour plus de détails, voir Exigences relatives à l’identificateur.

Note

Un identifiant d’entrepôt est requis ou facultatif selon ce qui suit :

  • Lors de la reprise ou de la suspension d’un entrepôt ou de l’annulation des requêtes d’un entrepôt, si un entrepôt est actuellement utilisé pour la session, l’identifiant peut être omis.

  • Lors du renommage d’un entrepôt ou de toute autre opération sur un entrepôt, l’identifiant doit être spécifié.

{ SUSPEND | RESUME [ IF SUSPENDED ] }

Spécifie l’action à effectuer sur l’entrepôt :

  • SUSPEND supprime tous les nœuds de calcul d’un entrepôt et place l’entrepôt dans un état ’Suspendu’.

  • RESUME [ IF SUSPENDED ] amène un entrepôt suspendu à un état ’En cours’ utilisable en configurant des ressources de calcul.

    La clause IF SUSPENDED facultative spécifie si la commande ALTER WAREHOUSE se termine avec succès lors de la reprise d’un entrepôt déjà en cours d’exécution :

    • Si omise, la commande échoue et renvoie une erreur si l’entrepôt est déjà en cours d’exécution.

    • Si elle est spécifiée, la commande est exécutée avec succès, que l’entrepôt soit en cours d’exécution ou non.

ABORT ALL QUERIES

Annule toutes les requêtes en cours d’exécution ou en file d’attente sur l’entrepôt.

RENAME TO new_name

Indique un nouvel identifiant de l’entrepôt ; il doit être unique pour votre compte.

Pour plus de détails, voir Exigences relatives à l’identificateur.

SET ...

Spécifie un (ou plusieurs) paramètre(s)/propriété(s) à définir pour l’entrepôt (séparés par des espaces, des virgules ou de nouvelles lignes).

WAREHOUSE_TYPE = { STANDARD | 'SNOWPARK-OPTIMIZED' }

Spécifie le type d’entrepôt.

Valeurs valides:
  • STANDARD, 'STANDARD'

  • 'SNOWPARK-OPTIMIZED'

Par défaut:

STANDARD

Note

Pour utiliser une valeur contenant un trait d’union ('SNOWPARK-OPTIMIZED'), vous devez la mettre entre guillemets simples, comme indiqué.

WAREHOUSE_SIZE = string_constant

Spécifie la taille de l’entrepôt virtuel. La taille détermine le nombre de ressources de calcul dans chaque cluster et, par conséquent, le nombre de crédits consommés pendant le fonctionnement de l’entrepôt.

Pour plus d’informations, voir Redimensionnement d’un entrepôt.

Valeurs valides:
  • XSMALL , 'X-SMALL'

  • SMALL

  • MEDIUM

  • LARGE

  • XLARGE , 'X-LARGE'

  • XXLARGE , X2LARGE , '2X-LARGE'

  • XXXLARGE , X3LARGE , '3X-LARGE'

  • X4LARGE , '4X-LARGE'

  • X5LARGE , '5X-LARGE'

  • X6LARGE , '6X-LARGE'

Par défaut:

XLARGE

Note

  • Les tailles XSMALL, SMALL, X5LARGE et X6LARGE ne prennent pas en charge les entrepôts optimisés pour Snowpark. La taille par défaut des entrepôts optimisés pour Snowpark est MEDIUM.

  • Pour utiliser une valeur contenant un trait d’union (par exemple, '2X-LARGE'), vous devez la mettre entre guillemets simples, comme indiqué.

  • Pour bloquer le renvoi immédiat d’un résultat par la commande ALTER WAREHOUSE jusqu’à ce que le redimensionnement soit terminé, ajoutez le paramètre WAIT_FOR_COMPLETION .

WAIT_FOR_COMPLETION = { TRUE | FALSE }

Lors du redimensionnement d’un entrepôt, vous pouvez utiliser ce paramètre pour bloquer le renvoi d’une valeur par la commande ALTER WAREHOUSE jusqu’à ce que le redimensionnement ait fini de provisionner toutes ses ressources de calcul. Ce blocage du retour de la commande lors du redimensionnement d’un entrepôt plus grand sert à vous informer que vos ressources de calcul ont été entièrement provisionnées et que l’entrepôt est maintenant prêt à exécuter des requêtes en utilisant toutes les nouvelles ressources.

Valeurs valides:
  • TRUE : la commande ALTER WAREHOUSE se bloque jusqu’à la fin du redimensionnement de l’entrepôt.

  • FALSE : la commande ALTER WAREHOUSE renvoie immédiatement une valeur, avant la fin du redimensionnement de l’entrepôt.

Par défaut:

FALSE

Note

  • La valeur de ce paramètre n’est pas conservée et doit être définie sur TRUE à chaque exécution si vous voulez que le redimensionnement de l’entrepôt soit terminé avant le renvoi d’une valeur par cette commande.

  • Si elle est définie sur TRUE et que vous interrompez la commande ALTER WAREHOUSE, seule l’attente est interrompue et le redimensionnement de l’entrepôt sera effectué. Pour redonner à l’entrepôt sa taille d’origine, vous devrez exécuter une autre commande ALTER WAREHOUSE.

  • Ce paramètre doit être utilisé avec le paramètre WAREHOUSE_SIZE, sinon une exception sera levée.

MAX_CLUSTER_COUNT = num

Spécifie le nombre maximum de clusters pour un entrepôt multi-clusters. Pour un entrepôt à un seul cluster, cette valeur est toujours 1.

Valeurs valides:

De 1 jusqu’à 10

Notez que spécifier une valeur supérieure à 1 indique que l’entrepôt est un entrepôt multi-clusters ; cependant, la valeur ne peut être définie que sur une valeur supérieure dans Snowflake Enterprise Edition (ou supérieure).

Pour plus d’informations, voir Entrepôts multi-clusters.

Par défaut:

1 (entrepôt à un seul cluster)

Astuce

Pour Snowflake Enterprise Edition (ou une version supérieure), nous recommandons de toujours régler la valeur supérieure à 1 pour aider à maintenir la haute disponibilité et la performance optimale de l’entrepôt (multi-clusters). Cela permet également d’assurer la continuité dans l’éventualité peu probable d’une défaillance de cluster.

MIN_CLUSTER_COUNT = num

Spécifie le nombre minimum de clusters pour un entrepôt multi-clusters.

Valeurs valides:

De 1 jusqu’à 10

Notez, cependant, que MIN_CLUSTER_COUNT doit être égal ou inférieur à MAX_CLUSTER_COUNT :

  • Si les deux paramètres sont égaux, l’entrepôt fonctionne en mode maximisé.

  • Si MIN_CLUSTER_COUNT est inférieur à MAX_CLUSTER_COUNT, l’entrepôt fonctionne en mode Mise à l’échelle automatique.

Pour plus d’informations, voir Entrepôts multi-clusters.

Par défaut:

1

SCALING_POLICY = { STANDARD | ECONOMY }

Paramètre d’objet qui spécifie la politique de démarrage et d’arrêt automatiques des clusters dans un entrepôt multi-clusters fonctionnant en mode « Mise à l’échelle automatique ».

Pour une description détaillée de ce paramètre, voir Définition de la politique de mise à l’échelle d’un entrepôt multi-clusters.

AUTO_SUSPEND = { num | NULL }

Indique le nombre de secondes d’inactivité après lesquelles un entrepôt est automatiquement suspendu.

Valeurs valides:

Tout nombre entier 0 ou supérieur, ou NULL :

  • Définir une valeur inférieure à 60 est autorisé, mais cette action est susceptible de ne pas déclencher le comportement escompté/souhaité car le processus d’arrière-plan qui suspend un entrepôt s’exécute environ toutes les 60 secondes et n’est donc pas destiné à autoriser le contrôle exact sur la suspension d’entrepôt.

  • La définition d’une valeur 0 ou NULL signifie que l’entrepôt n’est jamais suspendu.

Par défaut:

600 (l’entrepôt est automatiquement suspendu après 10 minutes d’inactivité)

Important

Définir la valeur AUTO_SUSPEND sur 0 ou NULL n’est pas recommandé à moins que vos charges de travail de requête nécessitent un entrepôt en cours d’exécution continue. Notez que cela peut entraîner une consommation importante de crédit (et des frais correspondants), en particulier pour les grands entrepôts.

Pour plus de détails, voir Considérations relatives aux entrepôts.

AUTO_RESUME = { TRUE | FALSE }

Indique s’il faut reprendre automatiquement un entrepôt lorsqu’une instruction (par exemple, une requête) SQL lui est soumise. Si cette valeur est définie sur FALSE, l’entrepôt ne redémarre que lorsqu’il est explicitement repris en utilisant ALTER WAREHOUSE ou via l’interface Web de Snowflake.

Valeurs valides:
  • TRUE : l’entrepôt reprend lorsqu’une nouvelle requête est soumise.

  • FALSE : l’entrepôt ne reprend que lorsqu’il est explicitement repris en utilisant ALTER WAREHOUSE ou via l’interface Web de Snowflake.

Par défaut:

TRUE (l’entrepôt reprend automatiquement lorsqu’une instruction SQL lui est soumise)

INITIALLY_SUSPENDED = { TRUE | FALSE }

Non applicable lors de la modification d’un entrepôt

RESOURCE_MONITOR = monitor_name

Indique l’identificateur d’un moniteur de ressources explicitement affecté à l’entrepôt. Lorsqu’un moniteur de ressources est explicitement affecté à un entrepôt, il contrôle les crédits mensuels utilisés par l’entrepôt (et tous les autres entrepôts auxquels le moniteur est affecté).

Valeurs valides:

Tout moniteur de ressources existant.

Pour plus de détails, voir Utilisation de moniteurs de ressources.

Par défaut:

Aucune valeur (aucun moniteur de ressources affecté à l’entrepôt)

Astuce

Pour afficher tous les moniteurs de ressources et leurs identificateurs, utilisez la commande SHOW RESOURCE MONITORS.

COMMENT = 'string_literal'

Ajoute un commentaire ou remplace un commentaire existant pour l’entrepôt.

MAX_CONCURRENCY_LEVEL = num

Paramètre d’objet qui spécifie le niveau de simultanéité des instructions SQL (requêtes et DML) exécutées par un cluster d’entrepôts. Lorsque le niveau est atteint :

  • Pour un entrepôt à un seul cluster ou un entrepôt à plusieurs clusters (en mode maximisé), des instructions supplémentaires sont mises en file d’attente jusqu’à ce que des ressources soient disponibles.

  • Pour un entrepôt multi-clusters (en mode « Mise à l’échelle automatique »), des clusters supplémentaires sont démarrés.

Ce paramètre peut être utilisé conjointement avec le paramètre STATEMENT_QUEUED_TIMEOUT_IN_SECONDS pour s’assurer qu’un entrepôt n’est jamais en attente.

Pour une description détaillée de ce paramètre, voir MAX_CONCURRENCY_LEVEL.

STATEMENT_QUEUED_TIMEOUT_IN_SECONDS = num

Paramètre objet qui spécifie le temps, en secondes, pendant lequel une instruction SQL (requête, DDL, DML, etc.) peut être mise en file d’attente sur un entrepôt avant qu’elle soit annulée par le système.

Ce paramètre peut être utilisé conjointement avec le paramètre MAX_CONCURRENCY_LEVEL pour s’assurer qu’un entrepôt n’est jamais en attente.

Pour une description détaillée de ce paramètre, voir STATEMENT_QUEUED_TIMEOUT_IN_SECONDS.

STATEMENT_TIMEOUT_IN_SECONDS = num

Paramètre objet qui spécifie le temps, en secondes, au bout duquel une instruction SQL en cours d’exécution (requête, DDL, DML, etc.) est annulée par le système.

Pour une description détaillée de ce paramètre, voir STATEMENT_TIMEOUT_IN_SECONDS.

TAG tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ]

Spécifie le nom de la balise et la valeur de la chaîne de la balise.

La valeur de la balise est toujours une chaîne de caractères et le nombre maximum de caractères pour la valeur de la balise est 256.

Pour plus d’informations sur la spécification des balises dans une instruction, voir Quotas de balises pour les objets et les colonnes.

ENABLE_QUERY_ACCELERATION = { TRUE | FALSE }

Indique s’il faut activer le service d’accélération des requêtes pour les requêtes qui dépendent de cet entrepôt pour les ressources de calcul.

Valeurs valides:
  • TRUE active Query Acceleration

  • FALSE désactive Query Acceleration

Par défaut:

FALSE : Query Acceleration est désactivé

QUERY_ACCELERATION_MAX_SCALE_FACTOR = num

Spécifie le facteur d’échelle maximum pour la location de ressources informatiques pour l’accélération des requêtes. Le facteur d’échelle est utilisé comme un multiplicateur basé sur la taille de l’entrepôt.

En définissant la valeur QUERY_ACCELERATION_MAX_SCALE_FACTOR à 0, on élimine la limite et on permet aux requêtes de louer autant de ressources que nécessaire et autant de ressources que disponibles pour traiter la requête.

Quelle que soit la valeur de QUERY_ACCELERATION_MAX_SCALE_FACTOR, la quantité de ressources informatiques disponibles pour l’accélération des requêtes est limitée par les ressources disponibles dans le service et le nombre d’autres requêtes simultanées. Pour plus de détails, reportez-vous à Ajustement du facteur d’échelle.

Valeurs valides:

De 0 jusqu’à 100

Par défaut:

8

UNSET ...

Spécifie une (ou plusieurs) propriété(s) et/ou paramètres à désactiver pour la base de données, qui les réinitialise aux valeurs par défaut :

  • property_name

  • param_name

    • TAG tag_name [ , tag_name ... ]

Vous pouvez réinitialiser plusieurs propriétés/paramètres avec une seule instruction ALTER ; cependant, chaque propriété/paramètre doit être séparé(e) par une virgule. De plus, lorsque vous réinitialisez une propriété/un paramètre, vous ne spécifiez que le nom ; aucune valeur n’est requise.

Note

UNSET peut être utilisé pour annuler toutes les propriétés et tous les paramètres d’un entrepôt, excepté WAREHOUSE_SIZE, qui ne peut être modifié qu’avec SET.

Exigences en matière de contrôle d’accès

Un rôle utilisé pour exécuter cette commande SQL doit avoir au moins l’un des privilèges suivants définis au minimum ainsi :

Privilège

Objet

Remarques

APPLY

Balise

Permet de définir une étiquette sur un entrepôt.

MODIFY

Entrepôt

Permet de modifier toutes les propriétés d’un entrepôt, y compris sa taille. Nécessaire pour affecter un entrepôt à un moniteur de ressources. Seul le rôle ACCOUNTADMIN peut affecter des entrepôts aux moniteurs de ressources.

MONITOR

Entrepôt

Permet de voir les requêtes actuelles et passées exécutées sur un entrepôt ainsi que les statistiques d’utilisation sur cet entrepôt.

OPERATE

Entrepôt

Permet de modifier l’état d’un entrepôt (arrêt, démarrage, suspension, reprise). Permet également de voir les requêtes actuelles et passées exécutées sur un entrepôt et d’interrompre toute requête en cours d’exécution.

USAGE

Entrepôt

Permet d’utiliser un entrepôt virtuel et, par conséquent, d’exécuter des requêtes sur l’entrepôt. Si l’entrepôt est configuré pour une reprise automatique lorsqu’une instruction (par exemple, une requête) SQL lui est soumise, l’entrepôt reprend automatiquement et exécute l’instruction.

Astuce

L’attribution du privilège global MANAGE WAREHOUSES équivaut à l’attribution des privilèges MODIFY, MONITOR et OPERATE sur tous les entrepôts d’un compte. Vous pouvez accorder ce privilège à un rôle dont l’objet inclut la gestion d’un entrepôt afin de simplifier votre gestion du contrôle d’accès à Snowflake.

Pour plus de détails, reportez-vous à Délégation de la gestion des entrepôts.

Pour obtenir des instructions sur la création d’un rôle personnalisé avec un ensemble spécifique de privilèges, voir Création de rôles personnalisés.

Pour des informations générales sur les rôles et les privilèges accordés pour effectuer des actions SQL sur des objets sécurisables, voir Aperçu du contrôle d’accès.

Notes sur l’utilisation

  • Un entrepôt n’a pas besoin d’être suspendu pour définir ou modifier ses propriétés, sauf son type.

  • Pour changer le type d’entrepôt, l’entrepôt doit être dans l’état suspended. Exécutez l’instruction suivante pour suspendre un entrepôt :

    ALTER WAREHOUSE mywh SUSPEND;
    
    Copy
  • Lorsque la taille de l’entrepôt est modifiée, la modification n’a aucune incidence sur les instructions, y compris les requêtes, qui sont en cours d’exécution. Une fois les instructions terminées et les ressources de calcul entièrement provisionnées, la nouvelle taille est utilisée pour toutes les instructions suivantes.

  • La suspension d’un entrepôt n’annule pas les requêtes en cours de traitement par l’entrepôt au moment où il est suspendu. Au lieu de cela, l’entrepôt termine les requêtes, puis éteint les ressources de calcul utilisées pour les traiter. Pendant cette période, l’entrepôt est en mode quiescing. Lorsque toutes les ressources de calcul sont éteintes, le statut de l’entrepôt devient « Suspendu ».

  • Concernant les métadonnées :

    Attention

    Les clients doivent s’assurer qu’aucune donnée personnelle (autre que pour un objet utilisateur), donnée sensible, donnée à exportation contrôlée ou autre donnée réglementée n’est saisie comme métadonnée lors de l’utilisation du service Snowflake. Pour plus d’informations, voir Champs de métadonnées dans Snowflake.

  • La reprise d’un entrepôt virtuel optimisé pour Snowpark peut prendre plus de temps que celle d’un entrepôt standard.

  • Les entrepôts optimisés pour Snowpark ne prennent pas en charge l’accélération des requêtes.

  • Les entrepôts optimisés pour Snowpark ne sont pas pris en charge pour les tailles d’entrepôts XSMall, SMALL, X5LARGE ou X6LARGE.

  • La spécification de la clause IF EXISTS exige que le rôle utilisé ou un rôle dans la hiérarchie des rôles actifs ait les privilèges d’entrepôt appropriés sur l’entrepôt.

Exemples

Renommez l’entrepôt wh1 en wh2 :

ALTER WAREHOUSE IF EXISTS wh1 RENAME TO wh2;
Copy

Reprenez un entrepôt nommé my_wh puis modifiez la taille de l’entrepôt pendant qu’il est en cours d’exécution :

ALTER WAREHOUSE my_wh RESUME;

ALTER WAREHOUSE my_wh SET warehouse_size=MEDIUM;
Copy