Hologres V2.0.21 et les versions ultérieures prennent en charge la fonction Rebalance, qui déclenche le rééquilibrage des shards. Cette rubrique explique comment utiliser la fonction Rebalance pour rééquilibrer les shards.
Contexte
Normalement, les nœuds de calcul Hologres répartissent les shards de manière équilibrée. Toutefois, dans certains scénarios, par exemple après une récupération rapide, les shards peuvent être inégalement répartis entre les nœuds de calcul. Dans ce cas, vous devez déclencher un rééquilibrage des shards pour les redistribuer. Cela garantit que tous les nœuds de calcul de l'instance chargent les shards de manière homogène.
Limites
La fonction Rebalance est prise en charge uniquement sur Hologres V2.0.21 et les versions ultérieures. Si votre instance exécute une version antérieure à la V2.0.21, sélectionnez Mettre à niveau une instance ou rejoignez le groupe de discussion Hologres pour demander une mise à niveau de l'instance. Pour plus d'informations, consultez Comment obtenir davantage d'assistance en ligne ?.
Syntaxe de commande
Instances à usage général et instances secondaires
Sur les instances à usage général ou secondaires, la fonction Rebalance redistribue les shards entre les nœuds de calcul. Voici la syntaxe :
SELECT hg_rebalance_instance();
-
Valeurs de retour :
true: le rééquilibrage des shards a été déclenché avec succès.false: indique qu'aucun rééquilibrage des shards n'est nécessaire.Error: échec du déclenchement du rééquilibrage des shards, par exemple en raison d'un pod défectueux.
-
Un état équilibré signifie que le nombre de shards sur chaque nœud de calcul diffère d'au maximum un. Par exemple :
Si une instance dispose de deux nœuds de calcul et de deux shards, chaque nœud de calcul reçoit un shard.
Si une instance dispose de deux nœuds de calcul et de trois shards, un nœud de calcul reçoit un shard et l'autre en reçoit deux.
Le rééquilibrage des shards prend généralement entre 2 et 3 minutes. La durée réelle dépend du nombre de groupes de tables dans l'instance. Plus il y a de groupes de tables, plus le rééquilibrage est long. Les opérations d'écriture sont interrompues pendant environ 15 secondes au cours de ce processus.
Le rééquilibrage des shards étant une opération asynchrone, exécutez l'instruction SQL suivante pour vérifier sa progression.
-
Valeurs de retour :
DOING: le rééquilibrage des shards est en cours.DONE: le rééquilibrage des shards est terminé.
SELECT hg_get_rebalance_instance_status();
Instances Virtual Warehouse
Contrairement aux instances à usage général et secondaires, une instance Virtual Warehouse peut diviser les ressources de calcul en plusieurs entrepôts virtuels. Par conséquent, pour rééquilibrer les shards d'une instance Virtual Warehouse, vous devez rééquilibrer chaque entrepôt virtuel séparément. Pour plus d'informations, consultez Rééquilibrer les shards dans un entrepôt virtuel.
FAQ
Identification d'une répartition déséquilibrée des shards
Lorsque vous exécutez une requête, la charge doit être uniformément répartie sur tous les nœuds de calcul. Si un nœud de calcul ne se voit attribuer aucun shard, sa charge sera nettement inférieure à celle des autres nœuds de calcul.
Exemple de répartition équilibrée des shards : la figure suivante montre une instance comportant 10 nœuds de calcul. Lors des opérations de requête et d'écriture, le tableau de bord de surveillance indique que l'utilisation du CPU est similaire sur les 10 nœuds de calcul.

-
Exemple de répartition déséquilibrée des shards : si un nœud de calcul ne possède aucun shard, le tableau de bord de surveillance affichera un schéma similaire à celui de la figure suivante, où un nœud de calcul présente une charge beaucoup plus faible que les autres.

Exécutez l'instruction SQL suivante pour vérifier quels nœuds de calcul ont chargé des shards :
SELECT DISTINCT worker_id FROM hologres.hg_worker_info;Analyse des résultats : seuls neuf nœuds de calcul ont chargé des shards, laissant un nœud sans shard.
Action : déclenchez le rééquilibrage des shards. Une fois l'opération terminée, le tableau de bord de surveillance indique que l'utilisation du CPU du nœud de calcul précédemment sous-utilisé augmente pour atteindre un niveau comparable à celui des autres.

Exécutez à nouveau la requête pour vérifier quels nœuds de calcul ont chargé des shards. Les résultats indiqueront que les 10 nœuds de calcul ont chargé des shards. La requête renvoie la colonne worker_id avec 10 valeurs d'ID de nœud (par exemple,
grgfs,fj4wtettwn5z).