Tous les produits
Search
Centre de documentation

PolarDB:Guide des opérations DDL pour PolarDB for MySQL

Dernière mise à jour :Aug 11, 2026

PolarDB for MySQL prend en charge les opérations DDL réparties en six catégories : index, clés primaires, colonnes, tables, clés étrangères, colonnes générées et partitions. Avant d'exécuter une modification de schéma en production, comprenez bien le comportement de chaque opération : verrouillage de la table, reconstruction complète ou achèvement en quelques secondes par simple modification des métadonnées.

Risques liés aux opérations DDL

Une seule instruction ALTER TABLE peut avoir les conséquences suivantes :

  • Maintenir un verrou exclusif sur la table pendant toute sa durée, bloquant ainsi toutes les lectures et écritures.

  • Déclencher une reconstruction complète de la table, ce qui peut prendre plusieurs heures pour les tables volumineuses.

  • Provoquer une file d'attente de connexions : les requêtes suivantes s'accumulent derrière l'opération DDL, entraînant des délais d'expiration ou des perturbations applicatives.

  • Générer des pics d'utilisation des IOPS et du CPU, affectant les autres charges de travail du même cluster.

PolarDB for MySQL a considérablement amélioré les performances DDL et la gestion des verrous au fil des versions. Ce guide vous aide à identifier le profil de risque de chaque opération avant son exécution.

Algorithmes d'exécution DDL

PolarDB sélectionne automatiquement l'algorithme le plus efficace selon l'ordre suivant : INSTANT → INPLACE → COPY. Comprendre chaque algorithme permet d'anticiper l'impact d'une opération DDL.

Algorithme Fonctionnement Impact
INSTANT Modifie uniquement les métadonnées dans le dictionnaire de données. Aucune donnée n'est copiée ni reconstruite. S'achève en quelques secondes, indépendamment de la taille de la table. Les lectures et écritures simultanées sont autorisées.
INPLACE Reconstruit ou réorganise les données au sein du moteur de stockage. La plupart des opérations INPLACE autorisent les lectures et écritures simultanées. Certaines opérations INPLACE (par exemple, RENAME TABLE et ADD COMMENT) ne touchent que les métadonnées et s'achèvent en quelques secondes. Impact minimal. Le DML simultané est généralement autorisé.
COPY Copie toutes les données de la table d'origine vers une nouvelle table. Maintient un verrou partagé sans écriture (SNW) pendant toute la durée de l'opération. Bloque toutes les écritures pendant toute la durée de l'opération. Les lectures restent autorisées.

Les opérations DDL qui autorisent les lectures et écritures simultanées lors de leur exécution sont appelées Online DDL. Cette approche minimise l'impact sur la production.

Contrôler la sélection de l'algorithme avec les clauses ALTER TABLE

Pour remplacer la sélection automatique d'algorithme ou imposer un comportement de verrouillage spécifique, utilisez les clauses ALGORITHM et LOCK dans ALTER TABLE :

Clause ALGORITHM : impose un algorithme spécifique. Si l'opération DDL ne prend pas en charge l'algorithme spécifié, une erreur est renvoyée immédiatement. Valeurs valides : DEFAULT, INSTANT, INPLACE, COPY.

Clause LOCK : contrôle l'accès simultané pendant l'exécution du DDL. Valeurs valides :

Valeur Comportement
DEFAULT Accorde le niveau maximal d'accès simultané pris en charge par le type de DDL.
NONE Exige des lectures et écritures simultanées. Renvoie une erreur si cela n'est pas pris en charge.
SHARED Autorise les lectures simultanées, mais bloque les écritures. Renvoie une erreur si les lectures simultanées ne sont pas prises en charge.
EXCLUSIVE Bloque toutes les lectures et écritures simultanées.

Spécifier LOCK empêche la table de devenir inaccessible pendant l'exécution : si le comportement de verrouillage réel ne répond pas à l'exigence spécifiée, l'opération s'arrête immédiatement.

PolarDB prend en charge le DDL parallèle pour les opérations sur les tables volumineuses, telles que la création d'index et la reconstruction de tables. Le DDL parallèle utilise plusieurs threads et peut améliorer la vitesse d'exécution jusqu'à 15-20 fois par rapport à une exécution monothread. Pour plus d'informations, consultez DDL parallèle .

Nous contacter

Si vous avez des questions concernant les opérations DDL, contactez le support technique.

Prévisualiser le comportement DDL avant l'exécution

Le comportement DDL pouvant être influencé par la structure de la table, la configuration des paramètres et les fonctionnalités activées, le comportement réel peut différer des tableaux présentés dans ce guide. Utilisez EXPLAIN DDL pour prévisualiser exactement comment une instruction DDL sera exécutée avant de la lancer.

{ EXPLAIN | DESCRIBE | DESC } ALTER TABLE ...

EXPLAIN DDL renvoie les informations suivantes :

  • Si le DDL peut s'exécuter avec succès.

  • L'algorithme qui sera utilisé (INSTANT, INPLACE ou COPY).

  • Si l'opération entraînera une reconstruction complète de la table.

  • Si le DML simultané est autorisé pendant l'exécution.

  • Si l'opération sera bloquée par des transactions non validées.

  • Si l'accélération par DDL parallèle est prise en charge et, le cas échéant, le degré de parallélisme.

Pour plus d'informations, consultez EXPLAIN DDL.

Comportement DDL par opération

Les tableaux ci-dessous détaillent le comportement des opérations DDL selon les versions de PolarDB for MySQL. Quatre colonnes décrivent le comportement de chaque opération :

  • DML simultané : indique si les lectures et écritures simultanées sont autorisées pendant l'exécution.

  • Reconstruction de la table : indique si l'opération déclenche une reconstruction complète de la table (opération longue pour les tables volumineuses).

  • Métadonnées uniquement : indique si l'opération modifie uniquement les métadonnées (s'achève en quelques secondes).

  • DDL parallèle : indique si l'opération prend en charge l'accélération par DDL parallèle.

Opérations sur les index

Opération DML simultané Reconstruction de la table Métadonnées uniquement DDL parallèle
Créer un index secondaire Oui Non Non 8.0.2 / 8.0.1 / 5.7 : Pris en charge ; 5.6 : Non pris en charge
Supprimer un index secondaire Oui Non Oui Non applicable
Renommer un index secondaire Oui Non Oui Non applicable
Ajouter un index texte intégral (FULLTEXT) Non Non¹ Non Non pris en charge
Ajouter un index spatial (SPATIAL) Non Non Non Non pris en charge

¹ Lors de l'ajout du premier index texte intégral à une table, une reconstruction supplémentaire de la table est déclenchée s'il n'existe pas de colonne FTS_DOC_ID définie par l'utilisateur.

Opérations sur les clés primaires

Opération DML simultané Reconstruction de la table Métadonnées uniquement DDL parallèle
Ajouter une clé primaire Oui¹ Oui Non 8.0.2 / 8.0.1 / 5.7 : Pris en charge ; 5.6 : Non pris en charge
Supprimer une clé primaire Non Oui Non Non pris en charge
Supprimer la clé primaire d'origine et en ajouter une nouvelle Oui¹ Oui Non 8.0.2 / 8.0.1 / 5.7 : Pris en charge ; 5.6 : Non pris en charge

¹ Le DML simultané est autorisé uniquement lorsque le paramètre de cluster sql_mode inclut STRICT_TRANS_TABLES ou STRICT_ALL_TABLES.

Opérations sur les colonnes

Les tableaux ci-dessous répertorient le comportement spécifique à chaque version. Consultez la section Limitations et exceptions après les tableaux pour connaître les contraintes importantes concernant l'ajout instantané de colonne, l'extension de longueur VARCHAR et la conversion de jeu de caractères.

PolarDB for MySQL 8.0.2

Opération DML simultané Reconstruction de la table Métadonnées uniquement DDL parallèle
Ajouter une colonne Oui Non¹ Oui¹ Pris en charge¹
Supprimer une colonne Oui Oui Non Pris en charge
Renommer une colonne Oui Non Oui Non applicable
Réordonner les colonnes Oui Oui Non Pris en charge
Définir la valeur par défaut d'une colonne Oui Non Oui Non applicable
Modifier le commentaire d'une colonne Oui Non Oui Non applicable
Modifier le type d'une colonne Non Oui Non Non pris en charge
Étendre la longueur VARCHAR Oui² Non Oui Non applicable
Changer le jeu de caractères de UTF8mb3 à UTF8mb4 Non Non³ Oui³ Non pris en charge
Supprimer la valeur par défaut d'une colonne Oui Non Oui Non applicable
Modifier la valeur d'auto-incrémentation Oui Non Oui Non applicable
Passer une colonne à NULL Oui Oui Non Pris en charge
Passer une colonne à NOT NULL Non Oui Non Non pris en charge
Modifier la définition d'une colonne ENUM/SET Oui Non Oui⁴ Non applicable

PolarDB for MySQL 8.0.1

Opération DML simultané Reconstruction de la table Métadonnées uniquement DDL parallèle
Ajouter une colonne Oui Non¹ Oui¹ Pris en charge¹
Supprimer une colonne Oui Oui Non Pris en charge
Renommer une colonne Oui Non Oui Non applicable
Réordonner les colonnes Oui Oui Non Pris en charge
Définir la valeur par défaut d'une colonne Oui Non Oui Non applicable
Modifier le commentaire d'une colonne Oui Non Oui Non applicable
Modifier le type d'une colonne Non Oui Non Non pris en charge
Étendre la longueur VARCHAR Oui² Non Oui Non applicable
Changer le jeu de caractères de UTF8mb3 à UTF8mb4 Non Non³ Oui³ Non pris en charge
Supprimer la valeur par défaut d'une colonne Oui Non Oui Non applicable
Modifier la valeur d'auto-incrémentation Oui Non Oui Non applicable
Passer une colonne à NULL Oui Oui Non Pris en charge
Passer une colonne à NOT NULL Non Oui Non Non pris en charge
Modifier la définition d'une colonne ENUM/SET Oui Non Oui⁴ Non applicable

PolarDB for MySQL 5.7

Opération DML simultané Reconstruction de la table Métadonnées uniquement DDL parallèle
Ajouter une colonne Oui Non¹ Oui¹ Pris en charge¹
Supprimer une colonne Oui Oui Non Pris en charge
Renommer une colonne Oui Non Oui Non applicable
Réordonner les colonnes Oui Oui Non Pris en charge
Définir la valeur par défaut d'une colonne Oui Non Oui Non applicable
Modifier le commentaire d'une colonne Oui Non Oui Non applicable
Modifier le type d'une colonne Non Oui Non Non pris en charge
Étendre la longueur VARCHAR Oui² Non Oui Non applicable
Changer le jeu de caractères de UTF8mb3 à UTF8mb4 Non Oui Non Non pris en charge
Supprimer la valeur par défaut d'une colonne Oui Non Oui Non applicable
Modifier la valeur d'auto-incrémentation Oui Non Oui Non applicable
Passer une colonne à NULL Oui Oui Non Pris en charge
Passer une colonne à NOT NULL Non Oui Non Non pris en charge
Modifier la définition d'une colonne ENUM/SET Oui Non Oui³ Non applicable

PolarDB for MySQL 5.6

Opération DML simultané Reconstruction de la table Métadonnées uniquement DDL parallèle
Ajouter une colonne Oui Non¹ Oui¹ Non pris en charge
Supprimer une colonne Oui Oui Non Non pris en charge
Renommer une colonne Oui Non Oui Non applicable
Réordonner les colonnes Oui Oui Non Non pris en charge
Définir la valeur par défaut d'une colonne Oui Non Oui Non applicable
Modifier le commentaire d'une colonne Oui Non Oui Non applicable
Modifier le type d'une colonne Non Oui Non Non pris en charge
Étendre la longueur VARCHAR Non Oui Non Non pris en charge
Changer le jeu de caractères de UTF8mb3 à UTF8mb4 Non Oui Non Non pris en charge
Supprimer la valeur par défaut d'une colonne Oui Non Oui Non applicable
Modifier la valeur d'auto-incrémentation Oui Non Oui Non applicable
Passer une colonne à NULL Oui Oui Non Non pris en charge
Passer une colonne à NOT NULL Non Oui Non Non pris en charge
Modifier la définition d'une colonne ENUM/SET Oui Non Oui² Non applicable

Limitations et exceptions

Ajout instantané de colonne

Lorsque la fonctionnalité d'ajout instantané de colonne est disponible, l'ajout d'une colonne modifie uniquement les métadonnées et s'achève en quelques secondes, quelle que soit la taille de la table. Le comportement varie selon la version :

Version Activation Notes supplémentaires
8.0.2 Activé par défaut
8.0.1 Activé par défaut Si la table possède un index columnstore, définissez loose_imci_enable_add_column_instant_ddl sur ON. PolarDB reconstruit alors l'index columnstore de manière asynchrone en arrière-plan. Pendant cette reconstruction, l'index columnstore est temporairement indisponible.
5.7 Définir loose_innodb_support_instant_add_column sur ON
5.6 Définir loose_innodb_support_instant_add_column sur ON Actuellement en version canari. Pour l'activer, accédez au Centre de quotas, recherchez l'ID de quota polardb_mysql_iac_56, et cliquez sur Apply. Non pris en charge sur les tables partitionnées.

Toutes les versions partagent les contraintes suivantes :

  • Les colonnes ne peuvent être ajoutées qu'à la fin de la table.

  • Si la table ne possède pas de clé primaire, définissez implicit_primary_key sur OFF afin d'éviter l'échec de l'opération dû à une clé primaire implicite en fin de table.

  • Non pris en charge sur les tables compressées (ROW_FORMAT=COMPRESSED), les tables avec index texte intégral ou les tables temporaires.

Lorsque l'ajout instantané de colonne n'est pas pris en charge, le système revient à l'algorithme INPLACE, déclenchant ainsi une reconstruction de la table. Les lectures et écritures simultanées restent autorisées pendant la reconstruction, et le DDL parallèle peut être utilisé pour l'accélérer.

Pour plus d'informations, consultez Ajout instantané de colonne.

Extension de la longueur VARCHAR

PolarDB stocke la longueur d'une colonne VARCHAR sur 1 octet pour les colonnes jusqu'à 255 octets, et sur 2 octets pour les colonnes de 256 octets ou plus. L'extension d'une colonne VARCHAR ne modifie que les métadonnées lorsque l'extension reste dans la même plage de longueur (0–255 octets, ou 256 octets vers une taille supérieure). Si l'extension franchit la limite (passant de moins de 256 octets à 256 octets ou plus), PolarDB utilise l'algorithme COPY par défaut, verrouillant la table pendant toute la durée de l'opération. Les écritures sont bloquées, tandis que les lectures restent autorisées.

Pour vérifier qu'une modification VARCHAR est éligible à une opération sur métadonnées uniquement, spécifiez ALGORITHM=INPLACE. Si l'algorithme INPLACE n'est pas pris en charge, une erreur est renvoyée immédiatement au lieu de revenir à l'algorithme COPY :

ALTER TABLE table_name ALGORITHM=INPLACE, CHANGE COLUMN c1 c1 VARCHAR(256);
ERROR 0A000: ALGORITHM=INPLACE is not supported. Reason: Cannot change column type INPLACE. Try ALGORITHM=COPY.

Pour éviter cette situation à l'avenir, définissez la longueur maximale des colonnes VARCHAR à 256 octets ou plus lors de la conception de votre schéma.

Changement de jeu de caractères de UTF8mb3 à UTF8mb4

Sur la version 8.0.2, le changement du jeu de caractères d'une colonne de UTF8mb3 à UTF8mb4 ne modifie que les métadonnées lorsque toutes les conditions suivantes sont remplies :

  • Le type de colonne est CHAR, VARCHAR, ENUM ou TEXT.

  • Aucun index n'existe sur la colonne modifiée.

  • La longueur de stockage maximale de la colonne se situe dans la même plage avant et après la conversion (toutes deux inférieures à 256 octets, ou toutes deux égales ou supérieures à 256 octets).

Sur la version 8.0.1, les mêmes conditions s'appliquent, et le paramètre loose_innodb_support_instant_modify_charset doit en outre être défini sur ON.

Sur les versions 5.7 et 5.6, l'algorithme COPY est toujours utilisé, ce qui entraîne la reconstruction de la table pendant toute la durée de l'opération.

Si les conditions ne sont pas remplies sur les versions 8.0.2 ou 8.0.1, l'algorithme COPY est utilisé. Pour confirmer si une modification est éligible à une opération sur métadonnées uniquement, spécifiez ALGORITHM=INPLACE. Si cela n'est pas pris en charge, une erreur est renvoyée immédiatement :

ALTER TABLE test MODIFY COLUMN b char(1) CHARACTER SET utf8mb4 DEFAULT NULL, ALGORITHM=INPLACE;
ERROR 1846 (0A000): ALGORITHM=INPLACE is not supported. Reason: Cannot change column type INPLACE. Try ALGORITHM=COPY.

Modifications de définition de colonnes ENUM/SET

La modification d'une colonne ENUM ou SET ne touche que les métadonnées lorsque la taille de stockage du type de données ne change pas et que vous ajoutez des éléments à la fin de l'ENUM ou du SET. Toute autre modification nécessite l'algorithme COPY pour reconstruire la table.

Opérations sur les tables

Opération DML simultané Reconstruction de la table Métadonnées uniquement DDL parallèle
Modifier ROW_FORMAT Oui Oui Non 8.0.2 / 8.0.1 / 5.7 : Pris en charge ; 5.6 : Non pris en charge
Modifier KEY_BLOCK_SIZE Oui Oui Non 8.0.2 / 8.0.1 / 5.7 : Pris en charge ; 5.6 : Non pris en charge
Définir des statistiques persistantes Oui Non Oui Non applicable
Déclarer un jeu de caractères Oui Non Oui Non applicable
Convertir un jeu de caractères Non Oui Non Non pris en charge
Optimiser une table¹ Oui Oui Non 8.0.2 / 8.0.1 / 5.7 : Pris en charge ; 5.6 : Non pris en charge
Reconstruire une table Oui Oui Non 8.0.2 / 8.0.1 / 5.7 : Pris en charge ; 5.6 : Non pris en charge
Renommer une table Oui Non Oui Non applicable
Modifier le commentaire d'une table Oui Non Oui Non applicable

¹ Lors de la défragmentation d'une table avec ALTER TABLE table_name ENGINE=InnoDB, ALGORITHM=INPLACE, LOCK=NONE, l'algorithme INPLACE n'est pas pris en charge pour les tables possédant des index texte intégral.

Opérations sur les colonnes générées

PolarDB for MySQL 5.6 ne prend pas en charge les colonnes générées.

Les versions 8.0.2, 8.0.1 et 5.7 présentent un comportement identique :

Opération DML simultané Reconstruction de la table Métadonnées uniquement DDL parallèle
Ajouter une colonne STORED Non¹ Oui Non Non pris en charge
Modifier l'ordre d'une colonne STORED Non Oui Non Non pris en charge
Supprimer une colonne STORED Oui Oui Non Pris en charge
Ajouter une colonne VIRTUAL Oui Non Oui Non applicable
Modifier l'ordre d'une colonne VIRTUAL Non Oui Non Non pris en charge
Supprimer une colonne VIRTUAL Oui Non Oui Non applicable

¹ L'ajout d'une colonne STORED implique la couche SQL/Server, le Online DDL n'est donc pas pris en charge.

Opérations sur les clés étrangères

Le comportement est identique pour toutes les versions (8.0.2, 8.0.1, 5.7, 5.6) :

Opération DML simultané Reconstruction de la table Métadonnées uniquement DDL parallèle
Ajouter une clé étrangère Oui¹ Non¹ Oui¹ Non applicable
Supprimer une clé étrangère Oui¹ Non¹ Oui¹ Non applicable

¹ Le DDL INPLACE est pris en charge uniquement lorsque foreign_key_checks est désactivé et que seules les métadonnées sont modifiées. Dans le cas contraire, seul l'algorithme COPY est pris en charge, verrouillant la table pendant toute la durée de l'opération.

Opérations sur les tables partitionnées

PolarDB for MySQL 8.0.2

Opération DML simultané Reconstruction de la table Métadonnées uniquement DDL parallèle
Ajouter une partition (ADD) Oui¹ Non² Oui Non pris en charge
Supprimer une partition (DROP) Oui¹ Non² Non Non pris en charge
Abandonner un espace de table de partition (DISCARD) Non Non Non Non pris en charge
Importer un espace de table de partition (IMPORT) Non Non Non Non pris en charge
Tronquer une partition (TRUNCATE) Oui Non Non Non pris en charge
Fusionner des partitions (COALESCE) Non Oui³ Non Non pris en charge
Réorganiser une partition (REORGANIZE) Oui¹ Non⁴ Non Non pris en charge
Échanger une partition (EXCHANGE) Oui¹ Non Oui Non pris en charge
Analyser une partition (ANALYZE) Oui Non Non⁵ Non pris en charge
Vérifier une partition (CHECK) Oui Non Non⁶ Non pris en charge
Optimiser une partition (OPTIMIZE) Oui⁷ Oui⁷ Non Pris en charge⁷
Reconstruire une partition (REBUILD) Oui¹ Non⁴ Non Non pris en charge
Réparer une partition (REPAIR) Oui Non⁸ Non Non pris en charge
Convertir une table en table partitionnée Non Oui Oui⁹ Non pris en charge
Convertir une table partitionnée en table standard Non Oui Non Non pris en charge
Créer un index partiel Oui Non¹⁰ Non Pris en charge

¹ Lorsque loose_partition_level_mdl_enabled est défini sur true, les verrous de métadonnées (MDL) au niveau de la partition garantissent que les opérations DDL n'affectent pas le DML sur les partitions non concernées. Pour plus d'informations, consultez Maintenance de partition en ligne.

² Pour les tables partitionnées RANGE et LIST, l'ajout ou la suppression de partitions ne nécessite pas de reconstruction de la table. Pour les tables partitionnées HASH et KEY, l'ajout de partitions nécessite une reconstruction de la table. La suppression de partitions dans les tables partitionnées HASH et KEY n'est pas prise en charge.

³ Seules les partitions HASH et KEY sont prises en charge.

⁴ La réorganisation ou la reconstruction d'une partition ne reconstruit que les partitions spécifiées nécessitant une redistribution et une reconstruction des données. Les autres partitions ne sont pas affectées.

⁵ L'analyse d'une partition modifie uniquement les statistiques, et non les métadonnées ou les données de la table.

⁶ La vérification d'une partition ne modifie ni les métadonnées ni les données.

⁷ Lors de l'exécution de OPTIMIZE PARTITION sur une table InnoDB, l'ensemble de la table partitionnée est reconstruit. Les lectures et écritures sont autorisées pendant la reconstruction. Définissez innodb_parallel_build_primary_index sur ON pour utiliser le DDL parallèle afin d'accélérer la reconstruction.

⁸ La réparation d'une partition ne reconstruit que les partitions spécifiées nécessitant une réparation.

⁹ La conversion instantanée prend uniquement en charge la conversion rapide d'une table standard en table partitionnée par plage.

¹⁰ PolarDB for MySQL prend en charge la création et la suppression d'index au niveau de la partition. Pour plus d'informations, consultez Index partiel.

PolarDB for MySQL 8.0.1

Opération DML simultané Reconstruction de la table Métadonnées uniquement DDL parallèle
Ajouter une partition (ADD) Non Non¹ Oui Non pris en charge
Supprimer une partition (DROP) Non Non² Non Non pris en charge
Abandonner un espace de table de partition (DISCARD) Non Non Non Non pris en charge
Importer un espace de table de partition (IMPORT) Non Non Non Non pris en charge
Tronquer une partition (TRUNCATE) Oui Non Non Non pris en charge
Fusionner des partitions (COALESCE) Non Oui Non Non pris en charge
Réorganiser une partition (REORGANIZE) Non Non³ Non Non pris en charge
Échanger une partition (EXCHANGE) Oui Oui Oui Non pris en charge
Analyser une partition (ANALYZE) Oui Oui Non⁴ Non pris en charge
Vérifier une partition (CHECK) Oui Non Non⁵ Non pris en charge
Optimiser une partition (OPTIMIZE) Oui⁶ Oui⁶ Non Pris en charge⁶
Reconstruire une partition (REBUILD) Non Non³ Non Non pris en charge
Réparer une partition (REPAIR) Oui Non³ Non Non pris en charge
Convertir une table en table partitionnée Non Oui Non Non pris en charge
Convertir une table partitionnée en table standard Non Oui Non Non pris en charge

¹ Pour les tables partitionnées RANGE et LIST, l'ajout de partitions ne nécessite pas de reconstruction de la table. Pour les tables partitionnées HASH et KEY, l'ajout de partitions nécessite une reconstruction de la table.

² La suppression de partitions dans les tables partitionnées HASH et KEY n'est pas prise en charge.

³ La réorganisation, la reconstruction et la réparation d'une partition ne reconstruisent que les partitions spécifiées. Les autres partitions ne sont pas affectées.

⁴ L'analyse d'une partition modifie uniquement les statistiques, et non les métadonnées ou les données de la table.

⁵ La vérification d'une partition ne modifie ni les métadonnées ni les données.

⁶ Lors de l'exécution de OPTIMIZE PARTITION sur une table InnoDB, l'ensemble de la table partitionnée est reconstruit. Les lectures et écritures sont autorisées pendant la reconstruction. Définissez innodb_parallel_build_primary_index sur ON pour utiliser le DDL parallèle afin d'accélérer la reconstruction.

PolarDB for MySQL 5.7

Opération DML simultané Reconstruction de la table Métadonnées uniquement DDL parallèle
Ajouter une partition (ADD) Non Non¹ Oui Non pris en charge
Supprimer une partition (DROP) Non Non¹ Non Non pris en charge
Abandonner un espace de table de partition (DISCARD) Non Non Non Non pris en charge
Importer un espace de table de partition (IMPORT) Non Non Non Non pris en charge
Tronquer une partition (TRUNCATE) Oui Non Non Non pris en charge
Fusionner des partitions (COALESCE) Non Oui Non Non pris en charge
Réorganiser une partition (REORGANIZE) Non Non² Non Non pris en charge
Permuter une partition Oui Non Oui Non pris en charge
Analyser une partition (ANALYZE) Oui Non Non³ Non pris en charge
Vérifier une partition (CHECK) Oui Non Non⁴ Non pris en charge
Optimiser une partition (OPTIMIZE) Non Oui Non Non pris en charge
Reconstruire une partition (REBUILD) Non Non² Non Non pris en charge
Réparer une partition (REPAIR) Oui Non² Non Non pris en charge
Convertir une table en table partitionnée Non Oui Non Non pris en charge
Convertir une table partitionnée en table standard Non Oui Non Non pris en charge

¹ Pour les tables partitionnées RANGE et LIST, l'ajout ou la suppression de partitions ne nécessite pas de reconstruction de la table. Pour les tables partitionnées HASH et KEY, l'ajout de partitions nécessite une reconstruction de la table. La suppression de partitions dans les tables partitionnées HASH et KEY n'est pas prise en charge.

² La réorganisation, la reconstruction et la réparation d'une partition ne reconstruisent que les partitions spécifiées. Les autres partitions ne sont pas affectées.

³ L'analyse d'une partition modifie uniquement les statistiques, et non les métadonnées ou les données de la table.

⁴ La vérification d'une partition ne modifie ni les métadonnées ni les données.

PolarDB for MySQL 5.6

Opération DML simultané Reconstruction de la table Métadonnées uniquement DDL parallèle
Ajouter une partition (ADD) Non Non¹ Oui Non pris en charge
Supprimer une partition (DROP) Non Non¹ Non Non pris en charge
Abandonner un espace de table de partition (DISCARD) Non Non Non Non pris en charge
Importer un espace de table de partition (IMPORT) Non Non Non Non pris en charge
Tronquer une partition (TRUNCATE) Oui Non Non Non pris en charge
Fusionner des partitions (COALESCE) Non Oui Non Non pris en charge
Réorganiser une partition (REORGANIZE) Non Non² Non Non pris en charge
Échanger une partition (EXCHANGE) Oui Non Oui Non pris en charge
Analyser une partition (ANALYZE) Oui Non Non³ Non pris en charge
Vérifier une partition (CHECK) Oui Non Non⁴ Non pris en charge
Optimiser une partition (OPTIMIZE) Non Oui Non Non pris en charge
Reconstruire une partition (REBUILD) Non Non² Non Non pris en charge
Réparer une partition (REPAIR) Oui Non² Non Non pris en charge
Convertir une table en table partitionnée Non Oui Non Non pris en charge
Convertir une table partitionnée en table standard Non Oui Non Non pris en charge

¹ Pour les tables partitionnées RANGE et LIST, l'ajout ou la suppression de partitions ne nécessite pas de reconstruction de la table. Pour les tables partitionnées HASH et KEY, l'ajout de partitions nécessite une reconstruction de la table. La suppression de partitions dans les tables partitionnées HASH et KEY n'est pas prise en charge.

² La réorganisation, la reconstruction et la réparation d'une partition ne reconstruisent que les partitions spécifiées. Les autres partitions ne sont pas affectées.

³ L'analyse d'une partition modifie uniquement les statistiques, et non les métadonnées ou les données de la table.

⁴ La vérification d'une partition ne modifie ni les métadonnées ni les données.

Choisir une méthode d'exécution

Lorsqu'une opération DDL utilise l'algorithme INSTANT ou INPLACE, exécutez-la directement via le noyau (Online DDL). C'est l'approche la plus rapide et la plus stable.

Lorsqu'une opération DDL utilise l'algorithme COPY, la table est verrouillée pendant toute la durée de l'opération. Dans ce cas, envisagez d'utiliser le DDL sans verrouillage dans DMS ou un outil tel que gh-ost pour autoriser les lectures et écritures pendant l'exécution. Ces approches sont plus lentes et peuvent échouer sur des tables volumineuses ou des charges de travail à haute concurrence en raison d'un volume excessif de données incrémentielles.

Méthode Lectures et écritures simultanées Vitesse Journalisation binaire requise Accélération parallèle
Noyau (Online DDL) Oui Rapide Non Pris en charge
DDL sans verrouillage dans DMS, gh-ost Oui Lente Oui Non pris en charge
Même avec des outils tiers, un verrou MDL-X est acquis lors du basculement de table (lorsque les métadonnées sont modifiées), bloquant temporairement la table. Pour résoudre ce problème, activez la fonctionnalité DDL non bloquant ou la fonctionnalité DDL préemptif .
Important

Les opérations DDL sans verrouillage peuvent augmenter l'utilisation des IOPS et du CPU. Exécutez-les pendant les heures creuses.

Rubriques connexes

Si vous avez des questions sur les opérations DDL, contactez le support technique.