Tous les produits
Search
Centre de documentation

PolarDB:Utiliser le MPP multi-nœud pour accélérer l'analyse de données massives

Dernière mise à jour :Aug 11, 2026

Lorsqu'un nœud unique de stockage en colonnes en lecture seule ne suffit plus à traiter les requêtes analytiques volumineuses (volume de données, complexité des requêtes ou concurrence des analyses de tables OSS), le traitement massivement parallèle (MPP) multi-nœud permet une mise à l'échelle horizontale par l'ajout de nœuds de stockage en colonnes en lecture seule. L'optimiseur In-Memory Column Index (IMCI) répartit automatiquement les requêtes éligibles sur tous les nœuds du groupe d'exécution. Cela augmente les ressources CPU et le débit d'E/S disponibles sans modifier vos requêtes SQL.

Fonctionnement

image

Le MPP multi-nœud constitue un groupe d'exécution composé de plusieurs nœuds de stockage en colonnes en lecture seule. Pour chaque instruction SQL entrante, l'optimiseur IMCI détermine s'il doit l'exécuter sur un seul nœud ou la distribuer au sein du groupe.

Cet optimiseur identifie précisément la méthode de traitement transactionnel (TP) des instructions SQL. Il choisit ensuite entre une exécution mono-nœud et une exécution parallèle multi-nœud pour les charges de travail analytiques (AP) importantes.

Cas d'usage

  • Exploitez les capacités de mise à l'échelle du MPP multi-nœud pour augmenter les ressources CPU et les IOPS alloués aux requêtes, afin de réduire la latence.

  • Mettez en œuvre un traitement des requêtes en mémoire en les distribuant sur plusieurs nœuds pour obtenir un débit supérieur.

Prérequis

Avant d'activer le MPP multi-nœud, assurez-vous que votre cluster répond aux exigences suivantes :

  • Un cluster PolarDB for MySQL Enterprise Edition

  • Version 8.0.1, révision 8.0.1.1.38 ou ultérieure

  • Au moins un nœud de stockage en colonnes en lecture seule ajouté au cluster. Pour plus d'informations, consultez Ajouter un nœud IMCI en lecture seule.

Activer le MPP multi-nœud

Pour activer et configurer le MPP multi-nœud, rejoignez le groupe DingTalk (ID : 27520023189) afin d'obtenir une assistance technique.

Bonnes pratiques

Clés de partitionnement

PolarDB prend en charge les partitions de niveau 1 et de niveau 2 via les stratégies de partitionnement HASH ou KEY. Le MPP multi-nœud repose sur une architecture « share-nothing » où chaque partition est attribuée à un seul nœud. Cela implique que :

  • Chaque nœud met en cache uniquement ses propres partitions, ce qui optimise l'utilisation de la mémoire.

  • Les opérations JOIN et GROUP BY portant sur les clés de partitionnement sont traitées localement sur chaque nœud, ce qui élimine les transferts de données inter-nœuds.

Pour tirer parti de cette architecture :

  • Créez des partitions HASH ou KEY de niveau 1 ou 2 sur les colonnes les plus fréquemment utilisées dans les requêtes JOIN et GROUP BY.

  • Maintenez un nombre de partitions identique pour toutes les tables HASH et KEY. Si deux tables possèdent un nombre de partitions différent, les opérations JOIN entre celles-ci nécessitent des transferts de données inter-nœuds et ne peuvent pas être traitées localement.

  • Privilégiez un grand nombre premier comme nombre de partitions afin de réduire la distribution inégale des données et d'améliorer l'utilisation des ressources.

Clés de tri

Pour les requêtes filtrant de grands volumes de données, créez des partitions RANGE ou ajoutez des clés de tri au stockage en colonnes. Appliquez ces partitions RANGE et clés de tri aux colonnes présentes dans les prédicats de la clause WHERE.

Par exemple, pour la condition de requête WHERE date > '2024-10-01' AND date < '2024-10-07' AND customer_id = 'X231' :

  • Créez des partitions RANGE sur la colonne date pour ignorer des plages entières de partitions lors de l'analyse.

  • Ajoutez des clés de tri IMCI sur la colonne customer_id afin d'éviter le parcours des segments de lignes ne correspondant pas au prédicat.

La combinaison de ces techniques réduit le volume de données à analyser et améliore le temps de réponse des requêtes. Pour plus d'informations, consultez Présentation d'IMCI et Configurer les clés de tri pour les index columnstore.

Vérifier l'utilisation du MPP multi-nœud

La vérification de l'utilisation du MPP s'effectue en deux étapes : déterminez d'abord si une requête est compatible avec le MPP, puis vérifiez si l'optimiseur a effectivement sélectionné ce mode d'exécution.

Étape 1 : Vérifier la compatibilité d'une requête avec le MPP

Ajoutez l'indicateur SET_VAR(imci_plan_use_mpp=forced) pour forcer l'optimiseur à générer un plan d'exécution MPP. Si le plan résultant contient un opérateur Exchange, la requête prend en charge l'exécution MPP multi-nœud.

EXPLAIN SELECT /*+ SET_VAR(imci_plan_use_mpp=forced) */ COUNT(*) FROM nation;

Exemple de sortie :

+----+----------------------------+--------+---------------------------------------------------------------------------------+
| ID | Operator                   | Name   | Extra Info                                                                      |
+----+----------------------------+--------+---------------------------------------------------------------------------------+
|  1 | Select Statement           |        | IMCI Execution Plan (max_dop = 11, max_query_mem = 37438953472)                 |
|  2 | └─Compute Scalar           |        |                                                                                 |
|  3 |   └─Aggregation            |        |                                                                                 |
|  4 |     └─Consume              |        | Consume ProducerPipeId: 1                                                       |
|  5 |       └─Exchange           |        | PipeId: 1, Consumers: 23377031, Producers: 23377031,23377032, Part Type: Gather |
|  6 |         └─Aggregation      |        |                                                                                 |
|  7 |           └─Table Scan     | nation |                                                                                 |
+----+----------------------------+--------+---------------------------------------------------------------------------------+

La présence de l'opérateur Exchange à la ligne 5 confirme que la requête peut s'exécuter en parallèle sur plusieurs nœuds.

Étape 2 : Vérifier le choix automatique du MPP par l'optimiseur

Une fois confirmé qu'une instruction SQL peut bénéficier du MPP multi-nœud, examinez son plan d'exécution pour vérifier si ce mode sera effectivement utilisé. La présence de l'opérateur Exchange dans le plan indique que l'instruction SQL sera exécutée en parallèle via le MPP multi-nœud.

Résultats des tests de performance

Pour consulter les résultats des benchmarks selon différentes configurations de nœuds, reportez-vous à Performances IMCI.