Tous les produits
Search
Centre de documentation

PolarDB:DDL parallèle

Dernière mise à jour :Aug 11, 2026

Le DDL parallèle accélère la création d'index sur les tables volumineuses en répartissant la charge de travail sur plusieurs threads plutôt que sur un seul. Lorsque les ressources matérielles le permettent, cette fonctionnalité réduit le temps d'exécution des opérations DDL et raccourcit la fenêtre pendant laquelle les opérations ultérieures de langage de manipulation de données (DML) sont bloquées.

Prérequis

Avant de commencer, assurez-vous de disposer :

  • D'un cluster PolarDB for MySQL répondant aux exigences de version ci-dessous

La création d'index secondaires nécessite l'une des versions de cluster suivantes :

  • PolarDB for MySQL 8.0.2, version de révision 8.0.2.1.7 ou ultérieure

  • PolarDB for MySQL 8.0.1, version de révision 8.0.1.1.10 ou ultérieure

  • PolarDB for MySQL 5.7, version de révision 5.7.1.0.7 ou ultérieure

La création d'index de clé primaire requiert l'une des versions de cluster suivantes :

  • PolarDB for MySQL 8.0.2, version de révision 8.0.2.2.9 ou ultérieure

  • PolarDB for MySQL 8.0.1, version de révision 8.0.1.1.31 ou ultérieure

Pour vérifier la version de votre cluster, consultez la rubrique Interroger le numéro de version.

Limites

Le DDL parallèle prend en charge la création d'index de clé primaire et d'index secondaires. Il ne permet pas de créer :

  • Des index plein texte

  • Des index spatiaux

  • Des index secondaires sur des colonnes virtuelles

Impact sur les ressources

Le DDL parallèle augmente l'utilisation des threads, ce qui accroît la consommation de CPU, de mémoire et d'E/S. Exécutez les opérations DDL parallèles pendant les heures creuses ou lorsque le cluster dispose de ressources matérielles suffisantes afin d'éviter toute incidence sur les opérations SQL concurrentes.

Activer le DDL parallèle

Définir le nombre de threads pour la création d'index secondaires

Le paramètre innodb_polar_parallel_ddl_threads détermine le nombre de threads exécutés en parallèle pour chaque opération DDL.

ParamètreNiveauDescription
innodb_polar_parallel_ddl_threadsSessionNombre de threads parallèles par opération DDL. Plage : 1–16. Valeur par défaut : 1 (monthread). Définissez une valeur différente de 1 pour activer le DDL parallèle lors de la création d'index secondaires.
Remarque

Lorsque cette valeur est définie sur 1, le système utilise tout de même deux threads parallèles en interne.

Exemple :

-- Use 8 parallel threads for the current session
SET innodb_polar_parallel_ddl_threads = 8;

-- Create a secondary index using the configured thread count
ALTER TABLE t0 ADD INDEX idx_b (b);

Activer la création parallèle d'index de clé primaire

L'utilisation du DDL parallèle pour les index de clé primaire nécessite une activation préalable à titre d'essai.

Important

Pour utiliser cette fonctionnalité, accédez au Centre de quotas. Recherchez le quota dont l'Quota ID est polardb_mysql_pddl_for_pk, puis cliquez sur Apply dans la colonne Actions pour demander un accès d'essai.

Paramètre Niveau Description
innodb_parallel_build_primary_index Global Contrôle l'autorisation du DDL parallèle pour la création d'index de clé primaire. Valeurs valides : ON (autorisé), OFF (par défaut, non autorisé).

Optimiser la phase de tri

Si le parallélisme de threads par défaut ne répond pas à vos exigences de performance, activez le tri par échantillonnage pour optimiser davantage la phase de tri.

Paramètre Niveau Description
innodb_polar_use_sample_sort Session Active l'optimisation par tri d'échantillonnage lors de la création d'index. Valeurs valides : ON, OFF (par défaut).

Exemple :

SET innodb_polar_parallel_ddl_threads = 8;
SET innodb_polar_use_sample_sort = ON;

ALTER TABLE t0 ADD INDEX idx_b (b);

Optimiser la phase de chargement

Pour accélérer encore la construction de l'arborescence d'index, activez le chargement en masse parallèle.

Paramètre Niveau Description
innodb_polar_use_parallel_bulk_load Session Active l'optimisation par chargement en masse parallèle pour la création de l'arborescence d'index. Valeurs valides : ON, OFF (par défaut).

Exemple — activation simultanée des trois optimisations :

SET innodb_polar_parallel_ddl_threads = 8;
SET innodb_polar_use_sample_sort = ON;
SET innodb_polar_use_parallel_bulk_load = ON;

ALTER TABLE t0 ADD INDEX idx_b (b);

Test de performance

Environnement de test

  • Cluster : PolarDB for MySQL édition Standard 8.0, 16 cœurs, 128 Go de mémoire

  • Stockage : 50 To

Table de test

CREATE TABLE t0(
  a INT PRIMARY KEY,
  b INT) ENGINE=InnoDB;

Les données de test ont été générées selon la procédure suivante :

DELIMITER //
CREATE PROCEDURE populate_t0()
BEGIN
     DECLARE i int DEFAULT 1;
     WHILE (i <= $table_size) DO
             INSERT INTO t0 VALUES (i, 1000000 * RAND());
             SET i = i + 1;
     END WHILE;
END //
DELIMITER ;
CALL populate_t0();
Remarque

Remplacez $table_size par le nombre de lignes souhaité, par exemple 1000000. Le test utilise des tables contenant 1 000 000, 10 000 000, 100 000 000 et 1 000 000 000 lignes, ainsi qu'une table de 1 To générée avec Sysbench. Pour plus de détails sur la configuration de Sysbench, consultez la rubrique Outils de test.

Méthode de test

Chaque test mesure le temps nécessaire pour créer un index secondaire sur la colonne b (type INT) dans des tables de taille croissante, avec le paramètre innodb_polar_parallel_ddl_threads défini successivement sur 1, 2, 4, 8, 16 et 32.

Résultats des tests

Les graphiques ci-dessous illustrent le facteur d'accélération obtenu par rapport au DDL monothread (nombre de threads = 1) pour trois combinaisons de paramètres.

Parallélisme de threads uniquement (innodb_polar_parallel_ddl_threads) :

Thread parallelism speedup

Parallélisme de threads + tri par échantillonnage (innodb_polar_parallel_ddl_threads + innodb_polar_use_sample_sort) :

Thread parallelism and sample sort speedup

Combinaison des trois paramètres (innodb_polar_parallel_ddl_threads + innodb_polar_use_sample_sort + innodb_polar_use_parallel_bulk_load) :

All three parameters speedup

Nous contacter

Si vous avez des questions concernant les opérations DDL, n'hésitez pas à contacter le support technique.

Ressources associées

En cas de questions sur les opérations DDL, contactez le support technique.