Tous les produits
Search
Centre de documentation

PolarDB:Online DDL

Dernière mise à jour :Aug 11, 2026

La modification du schéma d'une base de données en production comporte des risques : un verrouillage prolongé de la table peut bloquer votre application. La fonctionnalité Online DDL de PolarDB-X réduit le verrouillage des tables afin que les opérations DDL et les transactions DML s'exécutent simultanément, garantissant ainsi la réactivité de votre base de données lors des changements de schéma.

Prérequis

Avant d'exécuter des opérations Online DDL, confirmez les points suivants :

Fonctionnement

PolarDB-X exécute les DDL de deux manières distinctes selon le type d'opération.

Les DDL exécutés physiquement sont délégués aux nœuds de données. Le nœud de calcul gère le transfert au niveau des shards, la coordination et la gestion des métadonnées. Les opérations de cette catégorie — CREATE LOCAL INDEX, ALTER/ADD COLUMN et CREATE/DROP TABLE — suivent les mêmes principes d'exécution en ligne que les DDL MySQL.

Les DDL exécutés logiquement s'effectuent entièrement sur les nœuds de calcul. Au lancement d'une telle opération, le système crée une table temporaire, y copie les données existantes et capture simultanément les mises à jour DML incrémentielles. Une fois les données historiques et incrémentielles synchronisées, le système bascule le trafic de la table d'origine vers la table temporaire, sans la verrouiller. Cette catégorie comprend notamment GLOBAL INDEX, CREATE/DROP PARTITION, CREATE/DROP PRIMARY KEY et la Modification des types de colonnes sans verrouillage des tables.

Impact de chaque type de DDL sur la charge de travail

Pour évaluer l'impact d'une opération DDL sur votre base de données, examinez trois aspects :

Verrouillage des tables

  • Le Online DDL ne bloque les opérations DML que pendant quelques secondes, uniquement lors du basculement final de la table. Durant la majeure partie de l'exécution, les DML s'exécutent librement.

  • Les DDL non online verrouillent la table pendant toute la durée de l'opération.

Rechargement des données

  • Les opérations modifiant uniquement les métadonnées — comme INSTANT ADD COLUMN et RENAME TABLE — se terminent instantanément, sans rechargement de données.

  • Les commandes DROP TABLE et DROP INDEX modifient les métadonnées et suppriment rapidement les fichiers physiques, également sans rechargement.

  • Toutes les autres opérations DDL copient les données d'origine vers de nouveaux index cluster ou secondaires. Le temps d'exécution dépend du volume de données, de la concurrence et des spécifications de l'instance.

Multi-écriture synchrone

Les opérations DDL exécutées logiquement qui rechargent des données doivent également écrire le trafic DML concurrent dans la table temporaire. Comme ces multi-écritures utilisent des transactions distribuées pour garantir l'atomicité, les opérations DML s'exécutent alors comme des opérations logiques, ce qui réduit les performances des DML en ligne.

Pour limiter cet impact, PolarDB-X met en œuvre la multi-écriture asynchrone pour MOVE/SPLIT PARTITION, la Modification des types de colonnes sans verrouillage des tables et REBALANCE. Le trafic DML est mis en cache puis rejoué après la fin du rechargement, ce qui réduit les conflits et raccourcit la fenêtre de dégradation des performances.

Pour les DDL exécutés physiquement qui rechargent des données sans verrouillage, la multi-écriture asynchrone native est gérée automatiquement via les journaux en ligne. Les opérations ne rechargeant pas de données ne nécessitent aucune multi-écriture.

Référence des fonctionnalités Online DDL

Important

Lorsque vous utilisez MODIFY COLUMN ou CHANGE COLUMN, spécifiez toujours les attributs complets de la colonne. L'omission d'attributs peut entraîner des modifications inattendues. Exécutez SHOW FULL CREATE TABLE TABLE_NAME pour consulter la définition complète des colonnes avant d'appliquer des changements.

Opérations sur les index

Opération Exécution logique Verrouille la table Reconstruit la table Recharge les données Multi-écriture asynchrone
Création d'un index secondaire local (LSI) Non Non Non Oui —
Suppression d'un LSI Non Non Non Non —
Renommage d'un LSI Non Non Non Non —
Création d'un index secondaire global (GSI) Oui Non Oui Oui Non
Suppression d'un GSI Oui Non Non Non —
Renommage d'un GSI Oui Non Non Non —

Opérations sur les tables

Opération Exécution logique Verrouille la table Reconstruit la table Recharge les données Multi-écriture asynchrone
Modification du format de ligne (ROW_FORMAT) Non Non Oui Oui —
OPTIMIZE TABLE Non Non Oui Oui —
Renommage d'une table Non Non Non Non —
Modification du jeu de caractères par défaut Non Non Oui Oui —
Conversion du jeu de caractères Non Oui Oui Oui —
Troncature d'une table sans GSI (TRUNCATE TABLE WITHOUT GSI) Non Non Oui Non —
Troncature d'une table avec GSI (TRUNCATE TABLE WITH GSI) Oui Non Oui Non —

Opérations sur les partitions

Les fonctionnalités Online DDL de ce tableau s'appliquent à la fois aux groupes de tables et aux tables.
Opération Exécution logique Verrouille la table Reconstruit la table Recharge les données Multi-écriture asynchrone
Migration d'une partition Oui Non Oui (partitions concernées uniquement) Oui Oui*
Scission d'une partition Oui Non Oui (partitions concernées uniquement) Oui
Fusion de partitions Oui Non Oui (partitions concernées uniquement) Oui Non
Ajout d'une partition Oui Non Non Non† —
Suppression d'une partition Oui Non Non Non‡ —
Réorganisation de partitions Oui Non Oui (partitions concernées uniquement) Oui Non
Vidage d'une partition Oui Non Non Non —
Renommage d'une partition Oui Non Non Non —
Modification d'une partition Oui Non Oui (partitions concernées uniquement) Oui Non

\* Conditions de la multi-écriture asynchrone pour la migration de partition :

  • Tables logiques et GSI avec clé primaire explicite ou implicite : pris en charge.

  • Index secondaires globalement uniques (sans clé primaire) : non pris en charge.

† Comportement du rechargement lors de l'ajout d'une partition :

  • Table RANGE ou RANGE COLUMNS sans partition MAXVALUE : aucun rechargement nécessaire. Sinon, les données de partitions spécifiques sont rechargées.

  • Table LIST ou LIST COLUMNS sans partition DEFAULT : aucun rechargement nécessaire. Sinon, les données de partitions spécifiques sont rechargées.

‡ Comportement du rechargement lors de la suppression d'une partition :

  • Table RANGE ou RANGE COLUMNS : aucun rechargement lors de la suppression de la dernière partition ; rechargement requis pour les autres partitions.

  • Table LIST ou LIST COLUMNS sans partition DEFAULT : aucun rechargement nécessaire. Sinon, le rechargement est requis.

Opérations sur les séquences

Opération Exécution logique Verrouille la table Reconstruit la table Recharge les données Multi-écriture asynchrone
Création d'une séquence Oui Non Non Non —
Suppression d'une séquence Oui Non Non Non —
Modification des attributs d'une séquence Oui Non Non Non —
Conversion du type de séquence Oui Non Non Non —

Opérations courantes sur les colonnes

Important

Les opérations sur les colonnes se classent en trois catégories : les opérations courantes (sans lien avec la clé primaire, les clés de partitionnement ou les colonnes générées), les modifications de clés primaires et de partitionnement, et les opérations sur les colonnes générées. Exécutez SHOW FULL CREATE TABLE TABLE_NAME pour consulter tous les attributs des colonnes avant de déterminer la catégorie d'une opération.

Opération Exécution logique Verrouille la table Reconstruit la table Recharge les données Multi-écriture asynchrone
Ajout d'une colonne (voir Note 1) Non Non Oui Oui —
Suppression d'une colonne Non Non Oui Oui —
Renommage d'une colonne Non Non Non Non —
Modification de l'ordre des colonnes Non Non Oui Oui —
Modification de la valeur par défaut d'une colonne Non Non Non Non —
Suppression de la valeur par défaut d'une colonne Non Non Non Non —
Modification du type de données d'une colonne Non Oui Oui Oui —
Extension de la longueur d'une colonne VARCHAR (voir Note 2 et Note 3) Non Non Non Non —
Extension de la longueur d'une colonne CHAR (voir Note 3) Non Oui Oui Oui —
Passage d'une colonne à NULL Non Non Oui Oui —
Passage d'une colonne à NOT NULL* Non Non Oui Oui —

\* Si SQL_MODE contient strict_trans_tables ou strict_all_tables, il s'agit d'une opération en ligne. Dans le cas contraire, l'algorithme COPY est utilisé, ce qui verrouille la table et copie les données.

Note 1 — Options d'algorithme pour l'ajout de colonne :

Lorsque ALGORITHM=INSTANT ou ALGORITHM=OMC est explicitement spécifié, le comportement change :

Opération Exécution logique Verrouille la table Reconstruit la table Recharge les données Multi-écriture asynchrone
Instant ADD COLUMN Non Non Non Non —
Modification en ligne du type de colonne Oui Non Oui Oui Oui

Note 2 — Extension VARCHAR sur les nœuds de données 5,7 et 8,0 :

Les nœuds de données 5,7 prennent en charge l'extension de la longueur des colonnes VARCHAR avec l'algorithme INPLACE. Ce n'est pas le cas des nœuds 8,0.

La surcharge de stockage change à la limite de 256 octets : les colonnes de 255 octets ou moins utilisent 1 octet pour stocker la longueur, tandis que celles de 256 octets ou plus en utilisent 2. Étendre une colonne VARCHAR au-delà de cette limite nécessite plus qu'une simple modification des métadonnées.

Opération Exécution logique Verrouille la table Reconstruit la table Recharge les données Multi-écriture asynchrone
Extension de la longueur VARCHAR au-delà de 256 octets Non Non Oui Oui —

Note 3 — Extension CHAR sur les nœuds de données 5,7 et 8,0 :

Les nœuds de données 5,7 prennent en charge l'extension de la longueur des colonnes CHAR avec l'algorithme INPLACE. Ce n'est pas le cas des nœuds 8,0.

Opération Exécution logique Verrouille la table Reconstruit la table Recharge les données Multi-écriture asynchrone
Extension de la longueur d'une colonne CHAR Non Non Oui Oui —

Opérations sur les clés primaires et les colonnes de sharding

Opération Exécution logique Verrouille la table Reconstruit la table Recharge les données Multi-écriture asynchrone
Ajout d'une clé primaire Oui Non Oui Oui Non
Suppression de la clé primaire d'origine et ajout d'une nouvelle clé primaire Oui Non Oui Oui Non
Modification de la méthode de sharding, du nombre de shards ou des colonnes de sharding Oui Non Oui (recréation du GSI ou de la table principale) Oui Non
Modification de la définition de la colonne de sharding d'un GSI ou de la table principale Oui Non Oui (recréation du GSI ou de la table principale) Oui Non

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

Opération Exécution logique Verrouille la table Reconstruit la table Recharge les données Multi-écriture asynchrone
Ajout d'une colonne virtuelle Non Non Non Non —
Suppression d'une colonne virtuelle Non Non Non Non —
Ajout d'une colonne stockée Non Oui Oui Oui —
Suppression d'une colonne stockée Non Non Oui Oui —
Ajout d'une colonne logique Oui Non Oui Oui Non
Suppression d'une colonne logique Oui Non Oui Oui —

Contrôle du comportement d'exécution en ligne

PolarDB-X vous permet de contrôler directement l'algorithme d'exécution utilisé par une opération DDL :

  • Pour ajouter une colonne sans recharger les données, spécifiez ALGORITHM=INSTANT. Cela utilise la fonctionnalité Instant ADD COLUMN, qui se termine en modifiant uniquement les métadonnées.

  • Pour modifier une colonne en ligne sans verrouiller la table, spécifiez ALGORITHM=OMC. Cela déclenche une exécution logique (modification de colonne en ligne).

  • Les DDL exécutés logiquement s'effectuent en ligne par défaut, sans spécification particulière.

  • Pour exécuter en ligne des DDL physiques (opérations courantes sur les colonnes et index locaux), spécifiez ALGORITHM=INPLACE. Si l'opération ne prend pas en charge l'exécution en ligne, une erreur est renvoyée. Dans le cas contraire, elle s'exécute directement.

Comportement attendu lors d'un DDL sur table volumineuse

Pour les opérations DDL qui rechargent des données — comme la création d'un GSI sur une grande table ou la scission d'une partition — tenez compte des points suivants :

  • Impact sur les performances DML pendant le rechargement : Pour les opérations DDL exécutées logiquement sans prise en charge de la multi-écriture asynchrone, les DML en ligne s'exécutent comme des opérations logiques jusqu'à la fin du rechargement. Planifiez si possible les DDL sur tables volumineuses durant les périodes de faible trafic.

  • Consommation de ressources : Le rechargement copie les données vers de nouveaux index. Le temps d'exécution dépend du volume de données, de la concurrence et des spécifications de l'instance.

  • Accessibilité maintenue de la table : Le Online DDL ne bloque les DML que pendant quelques secondes lors du basculement final. Votre application peut continuer à lire et écrire tout au long de l'opération.

Rubriques connexes