Tous les produits
Search
Centre de documentation

AnalyticDB:Contrôle du flux de splits

Dernière mise à jour :Aug 26, 2026

Le contrôle du flux de splits limite le nombre de scans de splits concurrents exécutés dans une tâche ou sur un nœud. Sans cette limitation, une forte concurrence des scans peut entraîner les problèmes suivants :

  • Pour les tables internes, les scans de splits concurrents entrent en compétition pour les ressources d'E/S des nœuds de stockage, ce qui augmente l'utilisation du CPU et la consommation de mémoire, rendant ainsi les nœuds de stockage instables.

  • Pour les tables externes, l'efficacité du scan varie selon la source de données. Si le nombre de scans de splits concurrents dépasse le quota, les nouveaux scans consomment les ressources des nœuds de calcul et affectent les autres requêtes au lieu d'accélérer le scan global.

Le contrôle du flux de splits est activé par défaut.

Cette rubrique explique comment activer ou désactiver le contrôle du flux de splits et comment configurer le quota de scans de splits concurrents aux niveaux de la tâche et du nœud.

Prérequis

Avant de commencer, assurez-vous de disposer des éléments suivants :

  • Un cluster AnalyticDB for MySQL exécutant la version V3.1.10.0 ou ultérieure

Remarque

Pour vérifier la version mineure d'un cluster, consultez la rubrique Comment interroger la version d'un cluster AnalyticDB for MySQL ?. Pour mettre à niveau la version mineure, contactez le support technique.

Fonctionnement

Lorsqu'AnalyticDB for MySQL exécute une requête, il la décompose en étapes. Chaque étape s'exécute sous forme de plusieurs tâches réparties sur les nœuds. Pour scanner une table, celle-ci est divisée en splits. Chaque split est attribué à une tâche, et une tâche peut traiter plusieurs splits simultanément.

Le contrôle du flux de splits fonctionne à deux niveaux :

  • Niveau de la tâche : chaque tâche dispose d'un quota pour les scans de splits concurrents. Lorsque le nombre de scans de splits en cours d'exécution dans une tâche atteint le quota, les nouveaux scans de splits attendent qu'un scan en cours se termine.

  • Niveau du nœud : chaque nœud possède un quota global. Le quota par tâche s'ajuste dynamiquement en fonction du quota du nœud : il augmente lorsque le nœud dispose de capacités inutilisées et diminue lorsque le nœud est chargé.

Choisir une approche de gestion des quotas

Avant de configurer les quotas, décidez si vous souhaitez laisser le système ajuster automatiquement les quotas par tâche ou les définir sur une valeur fixe.

Approche Fonctionnement Cas d'utilisation
Ajustement dynamique (recommandé) Le système adapte le quota de chaque tâche à la hausse ou à la baisse en fonction de la charge actuelle du nœud Charges de travail mixtes où la disponibilité des ressources fluctue
Quota fixe Le quota par tâche est fixé à la valeur TARGET_RUNNING_SPLITS_LIMIT_PER_TASK Charges de travail prévisibles nécessitant un contrôle précis de la concurrence

L'ajustement dynamique nécessite que le contrôle du flux de splits soit activé.

Activer ou désactiver le contrôle du flux de splits

Le contrôle du flux de splits est activé par défaut. Pour le désactiver ou le réactiver, exécutez l'une des instructions suivantes.

Pour un cluster :

SET ADB_CONFIG SPLIT_FLOW_CONTROL_ENABLED=true|false;

Pour une seule requête (à l'aide d'un indice) :

/*+ SPLIT_FLOW_CONTROL_ENABLED=true|false*/ SELECT * FROM table;

Pour vérifier si le contrôle du flux de splits est actuellement activé :

SHOW ADB_CONFIG KEY=SPLIT_FLOW_CONTROL_ENABLED;

Configurer le quota par tâche

Activer ou désactiver l'ajustement dynamique

Lorsque l'ajustement dynamique est activé, le quota de chaque tâche augmente lorsque le nœud dispose de capacités inutilisées et diminue lorsque le quota du nœud est sous pression. Le quota par tâche reste compris entre les limites définies par MIN_RUNNING_SPLITS_LIMIT_PER_TASK et MAX_RUNNING_SPLITS_LIMIT_PER_TASK.

Lorsque l'ajustement dynamique est désactivé, le quota par tâche est fixé à la valeur TARGET_RUNNING_SPLITS_LIMIT_PER_TASK (par défaut : 32).

Important

Activez le contrôle du flux de splits avant d'activer l'ajustement dynamique. Exécutez SHOW ADB_CONFIG KEY=SPLIT_FLOW_CONTROL_ENABLED; pour confirmer.

Pour activer ou désactiver l'ajustement dynamique :

SET ADB_CONFIG NODE_LEVEL_SPLIT_FLOW_CONTROL_ENABLED=true|false;

Paramètres de quota

Les paramètres suivants contrôlent le quota de scans de splits concurrents par tâche.

Paramètre Valeur par défaut Plage valide Description
MIN_RUNNING_SPLITS_LIMIT_PER_TASK 1 De 1 à la valeur TARGET Le quota minimum par tâche. En cas de charge élevée du nœud, le quota dynamique diminue sans descendre en dessous de cette valeur.
TARGET_RUNNING_SPLITS_LIMIT_PER_TASK 32 De la valeur MIN à la valeur MAX Le quota de référence par tâche. Lorsque la somme des quotas cibles de toutes les tâches sur un nœud tient dans le quota du nœud, le quota de chaque tâche augmente dynamiquement. Sinon, il diminue. Cette valeur définit également le quota fixe lorsque l'ajustement dynamique est désactivé.
MAX_RUNNING_SPLITS_LIMIT_PER_TASK 64 Supérieur à la valeur TARGET Le quota maximum par tâche. Lorsque le nœud dispose de capacités inutilisées, le quota dynamique augmente sans dépasser cette valeur.

Appliquer les paramètres de quota pour un cluster ou une requête

Appliquez les paramètres de quota au niveau du cluster à l'aide de SET ADB_CONFIG, ou au niveau de la requête à l'aide d'un indice.

Niveau du cluster :

SET ADB_CONFIG <parameter>=<value>;

Niveau de la requête :

/*+ <parameter>=<value>*/ SELECT * FROM orders;

Exemples

Définissez le quota minimum de scans de splits concurrents à 24 pour toutes les tâches du cluster :

SET ADB_CONFIG MIN_RUNNING_SPLITS_LIMIT_PER_TASK=24;

Définissez le quota minimum à 10 pour une requête spécifique :

/*+ MIN_RUNNING_SPLITS_LIMIT_PER_TASK=10*/ SELECT * FROM orders;

Définissez le quota maximum à 128 pour toutes les tâches du cluster :

SET ADB_CONFIG MAX_RUNNING_SPLITS_LIMIT_PER_TASK=128;

Définissez le quota maximum à 100 pour une requête spécifique :

/*+ MAX_RUNNING_SPLITS_LIMIT_PER_TASK=100*/ SELECT * FROM adb_test;

Conseils d'optimisation

La réduction du quota d'une tâche signifie que davantage de splits attendent dans la file d'attente, ce qui augmente la latence du scan pour cette requête mais libère des ressources pour les autres requêtes. L'augmentation du quota a l'effet inverse.

Scénario Caractéristiques de la requête Approche recommandée
Requêtes ponctuelles ou requêtes à faible latence Peu de splits, petit volume de données, achèvement rapide attendu Définissez MIN, TARGET et MAX sur des valeurs plus élevées, ou désactivez le contrôle du flux de splits pour la requête
Grands scans de table complète avec priorité inférieure Nombreux splits, longue durée d'exécution, non sensibles à la latence Définissez TARGET sur une valeur plus faible pour protéger les requêtes prioritaires ; le quota augmente automatiquement lorsque les ressources sont inactives
Requêtes sur tables externes L'efficacité du scan dépend du débit de la source de données Définissez le quota en fonction des limites de transmission de la source de données pour éviter de surcharger la source

Configurer le quota au niveau du nœud

Chaque nœud dispose d'un quota global pour les scans de splits concurrents. La valeur par défaut est de 256 pour les nœuds de stockage et les nœuds de calcul.

Important

Ne modifiez pas la valeur par défaut. Un quota excessivement élevé ou faible dégrade les performances du cluster.

Nœuds de stockage (scans de tables internes) :

SET ADB_CONFIG WORKER_MAX_RUNNING_SOURCE_SPLITS_PER_NODE=256;

Nœuds de calcul (scans de tables externes) :

SET ADB_CONFIG EXECUTOR_MAX_RUNNING_SOURCE_SPLITS_PER_NODE=256;

Pour interroger le quota actuel au niveau du nœud :

SHOW ADB_CONFIG;

Pour plus d'informations, consultez la rubrique SHOW ADB_CONFIG.

Notes d'utilisation

  • Les modifications du quota de nœud s'appliquent uniquement aux splits en attente. La diminution du quota de nœud ne prend effet qu'après la fin des scans de splits en cours d'exécution.

  • Les quotas minimums par tâche peuvent entraîner un dépassement du quota de nœud. Si la somme des valeurs MIN_RUNNING_SPLITS_LIMIT_PER_TASK pour toutes les tâches sur un nœud dépasse le quota du nœud, le nombre réel de scans de splits concurrents sur le nœud peut dépasser le quota configuré pour le nœud.