Gérez les entrepôts virtuels pour isoler les ressources de calcul, contrôler la concurrence et optimiser les performances des requêtes selon les charges de travail. Utilisez la console Hologres ou des commandes SQL pour créer, mettre à l'échelle, arrêter et supprimer des entrepôts virtuels.
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
Une instance Hologres exécutant la version V2.0.4 ou ultérieure. Si votre instance est antérieure à la V2.0.4, mettez-la à niveau.
Les autorisations requises pour l'opération. Consultez la section Autorisations ci-dessous.
Autorisations
|**Opération**
|
**Autorisations requises**
| | --- | --- | |
Créer, supprimer, arrêter, reprendre, redémarrer, renommer
|
Compte Alibaba Cloud, ou utilisateur RAM disposant du rôle `Superuser` sur l'instance
| |
Mise à l'échelle (avant V3.0.28)
|
Compte Alibaba Cloud, ou utilisateur RAM disposant du rôle `Superuser` sur l'instance
| |
Mise à l'échelle (V3.0.28 et versions ultérieures)
|
Compte Alibaba Cloud, utilisateur RAM (`Superuser`), ou rôle RAM (compte STS) disposant de la stratégie `AliyunHologresWarehouseFullAccess` ou `AliyunHologresFullAccess` et du rôle `Superuser` sur l'instance
|
Notes d'utilisation
Nombre maximal d'entrepôts virtuels : chaque instance prend en charge un maximum de 10 entrepôts virtuels.
Plage de CU par entrepôt virtuel : minimum 32 CU, maximum 512 CU (incrément de 16). À partir de la version V3.0.10, le maximum passe à 1 024 CU. À partir de la version V3.0.27, la limite maximale de spécification est supprimée.
Entrepôt initial : lorsque vous achetez une instance d'entrepôt virtuel, Hologres crée automatiquement un entrepôt virtuel par défaut nommé
init_warehouse. Chaque instance ne possède qu'un seul entrepôt virtuel par défaut. Vous ne pouvez pas supprimer ni arrêter l'entrepôt virtuel par défaut via des commandes SQL, et vous ne pouvez pas le reprendre via des commandes SQL, mais vous pouvez le modifier. Tous les utilisateurs sont autorisés à utiliser l'entrepôt virtuel par défaut.Prise en charge des DDL : les instructions DDL peuvent être exécutées dans n'importe quel entrepôt virtuel.
Groupe de ressources : les instances d'entrepôt virtuel ne prennent pas en charge les groupes de ressources, qui sont en cours de suppression progressive. Créez plusieurs entrepôts virtuels pour assurer l'isolation des ressources. Pour plus d'informations, consultez Gestion des ressources.
Facturation : consultez Facturation.
Créer un entrepôt virtuel
La création d'un entrepôt virtuel est asynchrone. Après avoir exécuté la commande SQL, utilisez hg_get_warehouse_status pour vérifier que l'entrepôt est en cours d'exécution avant de l'utiliser.
Utiliser la console (recommandé)
Connectez-vous à la console Hologres et sélectionnez la région où se trouve votre instance.
Dans le volet de navigation de gauche, cliquez sur Instances, puis cliquez sur l'Instance ID cible.
Dans le volet de navigation de gauche de la page produit, cliquez sur Virtual Warehouse Management et accédez à l'onglet Virtual Warehouse Resource Management.
-
Cliquez sur Create Virtual Warehouse. Dans la boîte de dialogue, configurez les paramètres suivants et cliquez sur OK. Pour plus d'informations, consultez Présentation de l'élasticité des ressources.
|
**Paramètre**
|
**Description**
| | --- | --- | |
**Virtual Warehouse Name**
|
Nom de l'entrepôt virtuel à créer.
| |
**Single-cluster Specs**
|
Quantité de ressources réservées pour chaque cluster dans l'entrepôt virtuel.
| |
**Reserved Clusters**
|
Nombre initial de clusters. Les ressources des clusters réservés proviennent du pool de ressources réservé de l'instance.
|
Utiliser SQL
Syntaxe
CALL hg_create_warehouse ('<warehouse_name>', <cu>);
Paramètres
|**Paramètre**
|
**Type**
|
**Description**
| | --- | --- | --- | |
`warehouse_name`
|
TEXT
|
Nom du nouvel entrepôt virtuel. Ne peut contenir que des chiffres, des lettres et des traits de soulignement (`_`). Longueur maximale : 127 caractères.
| |
`cu`
|
INTEGER
|
Nombre de CU.
|
Supprimer un entrepôt virtuel
Vous ne pouvez pas supprimer l'entrepôt virtuel par défaut (init_warehouse) ni un entrepôt virtuel qui est l'entrepôt leader pour un groupe de tables. Vous devez arrêter l'entrepôt virtuel avant de le supprimer.
La suppression est asynchrone. Après avoir exécuté la commande SQL, utilisez hg_get_warehouse_status pour vérifier que la suppression est terminée.
Utiliser la console (recommandé)
Connectez-vous à la console Hologres et sélectionnez la région où se trouve votre instance.
Dans le volet de navigation de gauche, cliquez sur Virtual Warehouse Name, puis cliquez sur l'Single-cluster Specs cible.
Dans le volet de navigation de gauche de la page produit, cliquez sur Reserved Clusters et accédez à l'onglet Virtual Warehouse Resource Management.
Dans la colonne Actions de l'entrepôt virtuel cible, cliquez sur Stop. Confirmez et attendez l'arrêt de l'entrepôt.
Cliquez sur Delete dans la colonne Actions pour supprimer l'entrepôt virtuel.
Utiliser SQL
Syntaxe
CALL hg_drop_warehouse ('<warehouse_name>');
Paramètres
|**Paramètre**
|
**Type**
|
**Description**
| | --- | --- | --- | |
`warehouse_name`
|
TEXT
|
Nom de l'entrepôt virtuel à supprimer.
|
Mettre à l'échelle un entrepôt virtuel
Les opérations de mise à l'échelle sont asynchrones. Vérifiez l'achèvement avec hg_get_warehouse_status avant de procéder aux opérations suivantes.
Pour plus d'informations sur le fonctionnement de la mise à l'échelle élastique, consultez Présentation de l'élasticité des ressources.
Mise à l'échelle verticale ascendante (Scale up)
La mise à l'échelle ascendante augmente l'allocation de CU par entrepôt virtuel. L'instance doit disposer de suffisamment de ressources non allouées avant que vous ne puissiez augmenter l'échelle d'un entrepôt virtuel. Augmentez d'abord l'échelle de l'instance si nécessaire.
Impact sur les requêtes et les écritures en cours d'exécution
L'augmentation des ressources de l'instance n'affecte pas les requêtes et les écritures actuellement en cours d'exécution. L'allocation de ressources aux entrepôts virtuels a les impacts suivants :
À partir de la version V3.0.28 : les requêtes et les écritures ne sont pas interrompues lors de la mise à l'échelle ascendante et horizontale ascendante. Les tâches Flink peuvent échouer et être relancées.
Versions V2.2 à V3.0.28 : les requêtes et les écritures sont interrompues pendant environ 15 secondes, en raison du rééquilibrage automatique.
Avant la version V2.2 : les requêtes et les écritures sont interrompues pendant environ 15 secondes après le rééquilibrage manuel.
Les transactions DML multi-lignes sont interrompues lors de la mise à l'échelle ascendante, quelle que soit la version. Cela inclut les transactions avec hg_experimental_enable_transaction activé, les instructions natives INSERT OVERWRITE et les actualisations incrémentielles des Dynamic Tables .
Utiliser la console (recommandé)
Connectez-vous à la console Hologres et sélectionnez la région où se trouve votre instance.
Dans le volet de navigation de gauche, cliquez sur Instances, puis cliquez sur l'Instance ID cible.
Dans le volet de navigation de gauche de la page produit, cliquez sur Virtual Warehouse Management et accédez à l'onglet Virtual Warehouse Resource Management.
Dans la colonne Actions de l'entrepôt virtuel cible, cliquez sur Modify Configuration. Augmentez la valeur Single-cluster Specs jusqu'à la valeur cible et cliquez sur OK.
(Facultatif) Cliquez sur Rebalance dans la colonne Actions pour redistribuer les shards vers les pods nouvellement ajoutés.
Utiliser SQL
-
Augmentez l'échelle de l'entrepôt virtuel :
|
**Paramètre**
|
**Type**
|
**Description**
| | --- | --- | --- | |
`warehouse_name`
|
TEXT
|
Nom de l'entrepôt virtuel à modifier.
| |
`cu`
|
INTEGER
|
Nombre cible de CU. Minimum : 32. Maximum : 512. Incrément : 16.
|CALL hg_alter_warehouse ('<warehouse_name>', <cu>); -
Attendez la fin de la mise à l'échelle ascendante :
select hg_get_warehouse_status('<warehouse_name>');Une valeur de retour
Runningindique que la mise à l'échelle ascendante est terminée. -
Redistribuez les shards vers l'entrepôt mis à l'échelle :
SELECT hg_rebalance_warehouse ('<warehouse_name>'); -
Vérifiez l'état du rééquilibrage :
-- Check current status (returns DONE when complete) SELECT hg_get_rebalance_warehouse_status ('<warehouse_name>'); -- Or wait until rebalancing completes before returning select hg_wait_until_rebalance_warehouse_done('<warehouse_name>', <timeout_seconds>);timeout_seconds(INTEGER, facultatif) : période de délai d'attente en secondes.
Exemple : augmentez l'échelle de read_warehouse_1 à 64 CU.
-- Scale up the warehouse
CALL hg_alter_warehouse ('read_warehouse_1', 64);
-- Wait for the warehouse to be running
SELECT wait_until_warehouse_running ('read_warehouse_1');
-- Redistribute shards
SELECT hg_rebalance_warehouse ('read_warehouse_1');
-- Wait for rebalancing to complete
SELECT hg_wait_until_rebalance_warehouse_done ('read_warehouse_1');
Mise à l'échelle verticale descendante (Scale down)
La mise à l'échelle descendante déclenche d'abord le rééquilibrage des shards, en migrant les shards hors des pods qui seront mis hors ligne, puis supprime ces pods. Les ressources libérées retournent au pool de ressources non allouées de l'instance.
Impact sur les requêtes et les écritures en cours d'exécution
-
À partir de la version V3.1 (Beta) :
Les requêtes et écritures principales ne sont pas interrompues.
Les connexions sur les pods mis hors ligne subissent une déconnexion transitoire de quelques secondes.
Les tâches Flink peuvent échouer et être relancées.
Si une requête ou une écriture volumineuse est en cours d'exécution sur l'entrepôt virtuel lorsque la mise à l'échelle descendante est déclenchée et doit se poursuivre pendant plus de 60 minutes, elle générera une erreur 60 minutes après le début de la mise à l'échelle descendante.
Avant la version V3.1 : les requêtes et les écritures sont interrompues pendant environ 15 secondes lors du rééquilibrage.
Les transactions DML multi-lignes sont interrompues lors de la mise à l'échelle descendante, quelle que soit la version. Cela inclut les transactions avec hg_experimental_enable_transaction activé, les instructions natives INSERT OVERWRITE et les actualisations incrémentielles des Dynamic Tables .
Après la mise à l'échelle descendante, utilisez les ressources libérées pour créer de nouveaux entrepôts virtuels, augmenter l'échelle d'autres entrepôts ou libérer des ressources de l'instance.
Utiliser la console (recommandé)
Suivez les mêmes étapes que pour Mise à l'échelle verticale ascendante, mais diminuez la valeur Single-cluster Specs jusqu'à la valeur cible.
Utiliser SQL
-
Diminuez l'échelle de l'entrepôt virtuel :
|
**Paramètre**
|
**Type**
|
**Description**
| | --- | --- | --- | |
`warehouse_name`
|
TEXT
|
Nom de l'entrepôt virtuel à modifier.
| |
`cu`
|
INTEGER
|
Nombre cible de CU. Minimum : 32. Maximum : 512. Incrément : 16.
|CALL hg_alter_warehouse ('<warehouse_name>', <cu>); -
Vérifiez que l'entrepôt est de nouveau en état d'exécution :
select hg_get_warehouse_status('<warehouse_name>');Une valeur de retour
Runningconfirme que la mise à l'échelle descendante est terminée.
Mise à l'échelle horizontale ascendante (Scale out)
La mise à l'échelle horizontale ascendante ajoute davantage de clusters à l'entrepôt virtuel. Les mêmes notes d'utilisation que pour la mise à l'échelle verticale ascendante s'appliquent.
Utiliser la console
Connectez-vous à la console Hologres et sélectionnez la région où se trouve votre instance.
Dans le volet de navigation de gauche, cliquez sur Instances, puis cliquez sur l'Instance ID cible.
Dans le volet de navigation de gauche de la page produit, cliquez sur Virtual Warehouse Management et accédez à l'onglet Virtual Warehouse Resource Management.
Dans la colonne Actions de l'entrepôt virtuel cible, cliquez sur Modify Configuration. Augmentez la valeur Reserved Clusters jusqu'au nombre cible et cliquez sur OK.
Mise à l'échelle horizontale descendante (Scale in)
La mise à l'échelle horizontale descendante réduit le nombre de clusters dans l'entrepôt virtuel. Les mêmes notes d'utilisation que pour la mise à l'échelle verticale descendante s'appliquent.
Utiliser la console
Connectez-vous à la console Hologres et sélectionnez la région où se trouve votre instance.
Dans le volet de navigation de gauche, cliquez sur Instances, puis cliquez sur l'Instance ID cible.
Dans le volet de navigation de gauche de la page produit, cliquez sur Virtual Warehouse Management et accédez à l'onglet Virtual Warehouse Resource Management.
Dans la colonne Actions de l'entrepôt virtuel cible, cliquez sur Modify Configuration. Diminuez la valeur Reserved Clusters jusqu'au nombre cible et cliquez sur Actions.
Opérations O&M des entrepôts virtuels
Afficher les entrepôts virtuels
-- View all virtual warehouses in the current instance
SELECT * FROM hologres.hg_warehouses;
-- View the virtual warehouse currently in use
SELECT current_warehouse();
La table système hologres.hg_warehouses contient les colonnes suivantes :
**Champ**
|
**Type de données**
|
**Description**
|
**Exemple**
| | --- | --- | --- | --- | |
`warehouse_id`
|
INTEGER
|
ID unique de l'entrepôt virtuel.
|
`1`
| |
`warehouse_name`
|
TEXT
|
Nom de l'entrepôt virtuel.
|
`init_warehouse`
| |
`cpu`
|
INTEGER
|
Nombre de cœurs CPU.
|
`32`
| |
`mem`
|
INTEGER
|
Mémoire en Go.
|
`128`
| |
`cluster_min_count`
|
INTEGER
|
Nombre minimal de shards.
|
`1`
| |
`cluster_max_count`
|
INTEGER
|
Nombre maximal de shards.
|
`1`
| |
`target_status`
|
INTEGER
|
État cible de l'entrepôt virtuel. Étant donné que les changements d'état sont asynchrones, cela enregistre l'état final prévu. Valeurs valides : `1` (Running), `2` (Manually shut down).
|
`1`
| |
`status`
|
INTEGER
|
État actuel. Valeurs valides : `0` (Initialization), `1` (Running), `2` (Manually stopped), `3` (Processing failed — voir `status_detail` pour les détails), `4` (Processing).
|
`1`
| |
`status_detail`
|
TEXT
|
Détails supplémentaires sur l'état actuel.
|
—
| |
`is_default`
|
BOOLEAN
|
Indique s'il s'agit de l'entrepôt virtuel par défaut. `t` = par défaut ; `f` ≠ par défaut.
|
`t`
| |
`config`
|
TEXT
|
Configuration de l'entrepôt virtuel.
|
—
| |
`comment`
|
TEXT
|
Notes sur l'entrepôt virtuel.
|
—
|
Arrêter un entrepôt virtuel
Vous ne pouvez pas arrêter l'entrepôt virtuel par défaut (init_warehouse) ni un entrepôt virtuel principal dont le groupe de tables possède un entrepôt virtuel secondaire.
L'arrêt est asynchrone. Utilisez hg_get_warehouse_status pour vérifier que l'entrepôt est arrêté.
Utiliser la console (recommandé)
Connectez-vous à la console Hologres et sélectionnez la région où se trouve votre instance.
Dans le volet de navigation de gauche, cliquez sur Instances, puis cliquez sur l'Instance ID cible.
Dans le volet de navigation de gauche de la page produit, cliquez sur Virtual Warehouse Management et accédez à l'onglet Virtual Warehouse Resource Management.
Dans la colonne Actions de l'entrepôt virtuel cible, cliquez sur Stop et confirmez.
Utiliser SQL
CALL hg_suspend_warehouse ('<warehouse_name>');
**Paramètre**
|
**Type**
|
**Description**
| | --- | --- | --- | |
`warehouse_name`
|
TEXT
|
Nom de l'entrepôt virtuel à arrêter.
|
Reprendre un entrepôt virtuel
La reprise d'un entrepôt virtuel est asynchrone. Utilisez hg_get_warehouse_status pour vérifier que l'entrepôt est en cours d'exécution avant d'envoyer des requêtes.
Utiliser la console (recommandé)
Connectez-vous à la console Hologres et sélectionnez la région où se trouve votre instance.
Dans le volet de navigation de gauche, cliquez sur Instances, puis cliquez sur l'Instance ID cible.
Dans le volet de navigation de gauche de la page produit, cliquez sur Virtual Warehouse Management et accédez à l'onglet Virtual Warehouse Resource Management.
Dans la colonne Actions de l'entrepôt virtuel cible, cliquez sur Start et confirmez.
Utiliser SQL
CALL hg_resume_warehouse ('<warehouse_name>');
**Paramètre**
|
**Type**
|
**Description**
| | --- | --- | --- | |
`warehouse_name`
|
TEXT
|
Nom de l'entrepôt virtuel à reprendre.
|
Redémarrer un entrepôt virtuel
Le redémarrage d'un entrepôt virtuel est asynchrone. Utilisez hg_get_warehouse_status pour vérifier que l'entrepôt est en cours d'exécution avant d'envoyer des requêtes.
Utiliser la console (recommandé)
Connectez-vous à la console Hologres et sélectionnez la région où se trouve votre instance.
Dans le volet de navigation de gauche, cliquez sur Instances, puis cliquez sur l'Instance ID cible.
Dans le volet de navigation de gauche de la page produit, cliquez sur Virtual Warehouse Management et accédez à l'onglet Virtual Warehouse Resource Management.
Dans la colonne Actions de l'entrepôt virtuel cible, cliquez sur Restart et confirmez.
Utiliser SQL
CALL hg_restart_warehouse('<warehouse_name>');
**Paramètre**
|
**Type**
|
**Description**
| | --- | --- | --- | |
`warehouse_name`
|
TEXT
|
Nom de l'entrepôt virtuel à redémarrer.
|
Vérifier l'état de l'entrepôt virtuel
Toutes les opérations de création, de mise à l'échelle, d'arrêt, de reprise et de redémarrage sont asynchrones. Utilisez les fonctions suivantes pour surveiller l'état.
-- Get the current status of a virtual warehouse
select hg_get_warehouse_status('<warehouse_name>');
Pour bloquer l'exécution jusqu'à ce qu'un entrepôt virtuel atteigne l'état Running, utilisez wait_until_warehouse_running :
select wait_until_warehouse_running('<warehouse_name>', <timeout_seconds>);
**Paramètre**
|
**Type**
|
**Description**
| | --- | --- | --- | |
`warehouse_name`
|
TEXT
|
Nom de l'entrepôt virtuel.
| |
`timeout_seconds`
|
INTEGER
|
(Facultatif) Période de délai d'attente en secondes.
|
Exemple : augmentez l'échelle de warehouse_1 avant un chargement de données, puis réduisez-la.
-- Scale up to 64 CUs
CALL hg_alter_warehouse ('warehouse_1', 64);
-- Wait until running
SELECT wait_until_warehouse_running('warehouse_1');
-- Run the data load
INSERT INTO res_data SELECT * FROM org_data;
-- Scale back down to 32 CUs
CALL hg_alter_warehouse ('warehouse_1', 32);
Renommer un entrepôt virtuel
Utiliser la console (recommandé)
Connectez-vous à la console Hologres et sélectionnez la région où se trouve votre instance.
Dans le volet de navigation de gauche, cliquez sur Instances, puis cliquez sur l'Instance ID cible.
Dans le volet de navigation de gauche de la page produit, cliquez sur Virtual Warehouse Management et accédez à l'onglet Instances.
Dans la colonne Instance ID, cliquez sur l'icône
pour renommer l'entrepôt.
Utiliser SQL
CALL hg_rename_warehouse('<org_warehouse_name>', '<new_warehouse_name>');
**Paramètre**
|
**Type**
|
**Description**
| | --- | --- | --- | |
`org_warehouse_name`
|
TEXT
|
Nom actuel de l'entrepôt virtuel.
| |
`new_warehouse_name`
|
TEXT
|
Nouveau nom.
|
Opérations avancées
Rééquilibrer un entrepôt virtuel
Dans des conditions normales, les nœuds de travail d'un entrepôt virtuel chargent uniformément les métadonnées des shards. Après une récupération rapide, une mise à l'échelle ascendante ou horizontale ascendante, les shards peuvent être répartis de manière inégale. Déclenchez un rééquilibrage pour redistribuer les shards afin que chaque nœud de travail charge un nombre approximativement égal de shards.
À partir de la version V2.1 : Hologres déclenche automatiquement le rééquilibrage lorsqu'un entrepôt comporte des nœuds de travail vides.
À partir de la version V2.2 : les requêtes SELECT exécutées pendant le rééquilibrage sont automatiquement relancées, ce qui évite des erreurs telles que
ERROR: fail to execute query internal error: Get rundown is not allowed in recovering state.
Une opération de rééquilibrage prend généralement 2 à 3 minutes, selon le nombre de groupes de tables. Les opérations d'écriture sont interrompues pendant environ 15 secondes lors du rééquilibrage.
Syntaxe
SELECT hg_rebalance_warehouse ('<warehouse_name>');
**Paramètre**
|
**Type**
|
**Description**
| | --- | --- | --- | |
`warehouse_name`
|
TEXT
|
Nom de l'entrepôt virtuel à rééquilibrer.
|
Valeurs de retour
|**Valeur**
|
**Signification**
| | --- | --- | |
`true`
|
Rééquilibrage déclenché avec succès.
| |
`false`
|
Rééquilibrage non requis — les shards sont déjà équilibrés.
| |
Erreur
|
Échec du déclenchement du rééquilibrage (par exemple, un pod est défectueux).
|
Lorsque la différence du nombre de shards chargés par chaque nœud de travail est inférieure ou égale à 1, cela signifie que le rééquilibrage est terminé. Par exemple :
2 nœuds de travail, 2 shards : chaque nœud charge 1 shard.
2 nœuds de travail, 3 shards : un nœud charge 1 shard et l'autre en charge 2.
Étant donné que le rééquilibrage est asynchrone, surveillez la progression avec :
SELECT hg_get_rebalance_warehouse_status('<warehouse_name>');
DOING signifie que le rééquilibrage est en cours. DONE signifie qu'il est terminé.
Définir le délai d'expiration des instructions pour un entrepôt virtuel
Le délai d'expiration au niveau de l'entrepôt virtuel a une priorité inférieure aux configurations au niveau de la session et de la base de données. Pour que le paramètre au niveau de l'entrepôt prenne effet, réinitialisez d'abord la configuration au niveau de la base de données.
-- Reset the database-level setting
ALTER DATABASE <db_name> RESET statement_timeout;
-- Set the timeout for the virtual warehouse (value in milliseconds)
CALL hg_alter_warehouse ('<warehouse_name>', <cu>, '{"configs":{"gucs":{"statement_timeout":"600000"}}}');
Pour plus d'informations sur statement_timeout et d'autres paramètres GUC, consultez Paramètres GUC.