Tous les produits
Search
Centre de documentation

PolarDB:DDL parallèle

Dernière mise à jour :Oct 12, 2026

PolarDB prend désormais en charge le DDL parallèle. Lorsque les ressources matérielles de votre base de données sont inactives, utilisez le DDL parallèle pour accélérer l'exécution des instructions DDL, éviter le blocage des opérations DML connexes ultérieures et réduire la fenêtre d'exécution des opérations DDL.

Champ d'application

Pour créer un index secondaire, la version du cluster PolarDB doit répondre à l'une des conditions 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.

Pour créer un index de clé primaire, la version du cluster PolarDB doit répondre à l'une des conditions 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 plus d'informations sur la vérification de la version du cluster, consultez la rubrique Interroger la version du moteur.

Considérations

L'activation du DDL parallèle accroît la consommation de ressources matérielles (CPU, mémoire, E/S) proportionnellement au nombre de threads parallèles. Cela peut affecter les autres opérations SQL exécutées simultanément. Un nombre élevé de threads parallèles augmente l'utilisation de la mémoire. En cas de mémoire disponible insuffisante, une erreur d'épuisement de la mémoire (OOM) peut survenir et compromettre la stabilité du cluster. Utilisez donc le DDL parallèle pendant les heures creuses ou lorsque les ressources matérielles sont suffisantes.

Limites

L'accélération par DDL parallèle prend en charge les opérations DDL créant des index de clé primaire et des index secondaires (à l'exclusion des index full-text, des index spatiaux et des index secondaires sur des colonnes virtuelles).

Informations contextuelles

Les opérations DDL traditionnelles reposent sur un cœur unique et des disques durs classiques ; elles prennent donc beaucoup de temps sur les grandes tables et génèrent une latence excessivement élevée. Par exemple, lors de la création d'un index secondaire, une opération DDL à forte latence bloque les requêtes DML ultérieures dépendant du nouvel index. Le développement des processeurs multicœurs offre le support matériel nécessaire au DDL parallèle pour exploiter davantage de threads, tandis que l'adoption de disques SSD réduit la latence d'accès aléatoire à un niveau proche de celle de l'accès séquentiel. L'utilisation du DDL parallèle pour accélérer la création d'index sur les grandes tables revêt donc une importance particulière.

Utilisation

  • innodb_polar_parallel_ddl_threads

    Activez le DDL parallèle à l'aide du paramètre innodb_polar_parallel_ddl_threads suivant :

    Paramètre

    Niveau

    Description

    innodb_polar_parallel_ddl_threads

    Session

    Nombre de threads parallèles pour chaque opération DDL. Valeurs possibles : 1 à 16. Valeur par défaut : 1, ce qui indique que le DDL est exécuté en mode monothread.

    Si la valeur de ce paramètre n'est pas 1, le DDL parallèle est automatiquement activé lors de la création d'un index secondaire.

    Remarque

    Lorsque la valeur de ce paramètre est 1, le système active deux threads parallèles par défaut.

  • innodb_parallel_build_primary_index

    Contrôlez l'autorisation du DDL parallèle lors de la création d'un index de clé primaire à l'aide du paramètre innodb_parallel_build_primary_index suivant :

    Remarque

    Pour utiliser la fonctionnalité de création d'index de clé primaire parallèle, accédez au Centre de quotas. Recherchez la ligne dont l'ID de quota Quota ID est polardb_mysql_pddl_for_pk polardb_mysql_pddl_for_pk, puis dans la colonne Actions Actions, cliquez sur Demander Apply pour solliciter un essai.

    Paramètre

    Niveau

    Description

    innodb_parallel_build_primary_index

    Global

    Indique si le DDL parallèle est autorisé lors de la création d'un index de clé primaire. Valeurs possibles :

    • ON : autorise le DDL parallèle lors de la création d'un index de clé primaire

    • OFF : n'autorise pas le DDL parallèle lors de la création d'un index de clé primaire (par défaut)

  • innodb_polar_use_sample_sort

    Si l'activation seule du DDL parallèle ne répond pas à vos besoins, utilisez le paramètre innodb_polar_use_sample_sort pour optimiser davantage le tri effectué lors de la création de l'index.

    Paramètre

    Niveau

    Description

    innodb_polar_use_sample_sort

    Session

    Indique s'il faut activer la fonctionnalité d'optimisation du tri par échantillonnage. Valeurs possibles :

    • ON : active la fonctionnalité d'optimisation du tri par échantillonnage

    • OFF : désactive la fonctionnalité d'optimisation du tri par échantillonnage (par défaut)

  • innodb_polar_use_parallel_bulk_load

    Si les fonctionnalités précédentes ne satisfont toujours pas vos exigences, utilisez également le paramètre innodb_polar_use_parallel_bulk_load pour optimiser davantage la construction de l'arbre d'index.

    Paramètre

    Niveau

    Description

    innodb_polar_use_parallel_bulk_load

    Session

    Indique s'il faut activer la fonctionnalité d'optimisation du chargement groupé parallèle. Valeurs possibles :

    • ON : active la fonctionnalité d'optimisation du chargement groupé parallèle

    • OFF : désactive la fonctionnalité d'optimisation du chargement groupé parallèle (par défaut)

Test de performance

  • Environnement de test

    • Un cluster PolarDB for MySQL 8,0 Édition Standard doté de 16 cœurs et de 128 Go de mémoire.

    • La capacité de stockage du cluster est de 50 To.

  • Schéma de la table de test

    Créez une table nommée t0 t0 à l'aide de l'instruction suivante :

    CREATE TABLE t0(
    a INT PRIMARY KEY,
    b INT) ENGINE=InnoDB;
  • Données de la table de test

    Générez les données de test à l'aide de l'instruction 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
    • Lors d'un test réel, remplacez $table_size $table_size par le nombre réel d'enregistrements dans la table, par exemple 1000000 1000000.

    • Ce test utilise des tables contenant 1 000 000, 10 000 000, 100 000 000 et 1 000 000 000 d'enregistrements, ainsi qu'une table contenant 1 To de données.

    • La table de test contenant 1 To de données est générée à l'aide de Sysbench. Pour plus d'informations sur l'utilisation de Sysbench, consultez la rubrique Outils de test.

  • Méthode de test

    Ce test utilise différents nombres de threads parallèles (c'est-à-dire qu'il définit le paramètre innodb_polar_parallel_ddl_threads sur 1, 2, 4, 8, 16 et 32). Pour des tables de volumes de données différents, le test mesure le ratio d'amélioration de l'efficacité d'exécution des DDL obtenu en activant le DDL parallèle pour créer un index secondaire. L'index est créé sur une colonne dont le type de données est INT INT et dont le nom est b b.

  • Résultats des tests

    • La figure suivante illustre le ratio d'accélération du DDL parallèle lorsque seul le paramètre innodb_polar_parallel_ddl_threads est activé.A

    • La figure suivante présente le ratio d'accélération du DDL parallèle lorsque les paramètres innodb_polar_parallel_ddl_threads et innodb_polar_use_sample_sort sont tous deux activés.Speedup results

    • La figure ci-dessous montre le ratio d'accélération du DDL parallèle lorsque les paramètres innodb_polar_parallel_ddl_threads, innodb_polar_use_sample_sort et innodb_polar_use_parallel_bulk_load sont activés.B

Nous contacter

Si vous avez des questions sur les opérations DDL, Contactez-nous.