Ajoutez une colonne à une table de n'importe quelle taille en quelques secondes, quel que soit le volume de données.
PolarDB for MySQL utilise l'algorithme INSTANT pour cette opération DDL. Seules les métadonnées du dictionnaire de données sont modifiées. Aucune donnée historique n'est copiée ni altérée, et la table n'est jamais reconstruite.
Versions prises en charge
| Version | Révision minimale | Notes |
|---|---|---|
| PolarDB for MySQL 8.0 | Toutes | Fonctionnalité activée par défaut. Aucune configuration requise. |
| PolarDB for MySQL 5.7 | 5.7.1.0.6 | Activez le paramètre loose_innodb_support_instant_add_column avant utilisation. |
| PolarDB for MySQL 5.6 | 5.6.1.0.43 | Disponible en version canary. Demandez l'accès via le Quota Center en utilisant le quota polardb_mysql_iac_56. |
Pour vérifier le numéro de révision de votre cluster, consultez la rubrique Vérification du numéro de version.
Limites
| Limite | Détails |
|---|---|
| Position de la colonne | La nouvelle colonne doit obligatoirement être la dernière de la table. |
| Colonnes virtuelles | Prise en charge sur la version 8.0. Non disponible sur les versions 5.6 et 5.7. |
| Tables partitionnées | Non prise en charge sur la version 5.6. Compatible avec les versions 5.7 et 8.0. Pour la version 5.7, cette fonctionnalité est en phase canary ; demandez l'accès via le Quota Center avec le quota polarM_57_iac_on_partition_table. |
| Index de texte intégral | Les tables contenant des index de texte intégral ne sont pas compatibles. |
| Tables compressées | L'ajout instantané ne fonctionne pas sur les tables définies avec ROW_FORMAT=COMPRESSED. |
| Tables avec index IMCI (In-Memory Column Index) | Pour les versions 8.0.1.1.42 et antérieures, ou 8.0.2.2.23 et antérieures : définissez imci_enable_add_column_instant_ddl sur ON. Une fois activé, l'ajout instantané déclenche une reconstruction silencieuse de l'IMCI en arrière-plan, rendant ce dernier indisponible pendant l'opération. Pour les versions 8.0.1.1.42 et ultérieures, ou 8.0.2.2.23 et ultérieures : définissez imci_enable_add_column_instant_ddl sur OFF. |
| Tables avec clés primaires implicites | Si implicit_primary_key est activé, vous devez définir une clé primaire personnalisée. |
| Instructions DDL combinées | Impossible de combiner l'ajout instantané de colonne avec d'autres opérations DDL (comme la création d'un index) dans une même instruction ALTER TABLE. |
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
Un cluster PolarDB for MySQL exécutant une version prise en charge
Pour PolarDB for MySQL 5.6 : un accès autorisé via le Quota Center
Pour PolarDB for MySQL 5.7 : le paramètre
loose_innodb_support_instant_add_columndéfini surON
Activer l'ajout instantané de colonne (versions 5.6 et 5.7 uniquement)
Les clusters PolarDB for MySQL 8.0 prennent en charge nativement l'ajout instantané de colonne. Pour les clusters 5.6 et 5.7, configurez le paramètre suivant :
| Paramètre | Niveau | Description |
|---|---|---|
loose_innodb_support_instant_add_column |
Global | Active ou désactive l'ajout instantané de colonne. Valeurs valides : ON (activé) et OFF (valeur par défaut, désactivé). |
Pour plus d'informations sur la configuration des paramètres, consultez Activer un paramètre.
Ajouter une colonne instantanément
Forcer l'algorithme INSTANT
Spécifiez ALGORITHM=INSTANT pour garantir l'utilisation de l'algorithme INSTANT :
ALTER TABLE <table_name> ADD COLUMN <column_name> int, ALGORITHM=INSTANT;
Si le cluster ou la table ne prend pas en charge l'ajout instantané de colonne, l'instruction renvoie l'erreur suivante :
ERROR 0A000: ALGORITHM=INSTANT is not supported for this operation. Try ALGORITHM=COPY/INPLACE.
En cas d'apparition de cette erreur, vérifiez que le paramètre loose_innodb_support_instant_add_column est bien activé et passez en revue les Limites.
Laisser PolarDB choisir automatiquement l'algorithme
Omettez la clause ALGORITHM ou spécifiez ALGORITHM=DEFAULT pour permettre à PolarDB de sélectionner l'algorithme le plus rapide disponible. L'évaluation s'effectue selon l'ordre de priorité suivant : INSTANT > INPLACE > COPY.
ALTER TABLE <table_name> ADD COLUMN <column_name> int, ALGORITHM=DEFAULT;
ALTER TABLE <table_name> ADD COLUMN <column_name> int;
Vérifier l'utilisation de l'algorithme INSTANT
PolarDB for MySQL 5.6 et 5.7
Interrogez la table INNODB_SYS_INSTANT_COLUMNS dans INFORMATION_SCHEMA. Celle-ci contient les noms des colonnes, leurs positions ordinales ainsi que leurs valeurs par défaut (au format binaire) pour toutes les colonnes ajoutées via l'algorithme INSTANT :
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_INSTANT_COLUMNS;
L'exécution ultérieure d'une opération DDL nécessitant la reconstruction de la table (telle que OPTIMIZE TABLE) entraîne une reconstruction physique complète par PolarDB. Les colonnes INSTANT deviennent alors des colonnes standard tout en conservant intégralement leurs données. Les entrées correspondantes sont simultanément supprimées de INNODB_SYS_INSTANT_COLUMNS.
PolarDB for MySQL 8.0
Interrogez INFORMATION_SCHEMA.INNODB_COLUMNS et examinez la colonne has_default. Une valeur égale à 1 confirme que la colonne a été ajoutée au moyen de l'algorithme INSTANT :
SELECT * FROM INFORMATION_SCHEMA.INNODB_COLUMNS
WHERE TABLE_ID = (
SELECT TABLE_ID FROM INFORMATION_SCHEMA.INNODB_TABLES
WHERE NAME = "<database_name>/<table_name>"
);
Étapes suivantes
Prise en charge des opérations DDL dans PolarDB for MySQL — Référence complète des algorithmes DDL compatibles avec PolarDB for MySQL
Pour toute question relative aux opérations DDL, contactez le support technique
Nous contacter
Si vous avez des questions sur les opérations DDL, veuillez contacter le support technique.