Online Modify Column (OMC) vous permet d'exécuter des instructions ALTER TABLE dans PolarDB-X sans verrouiller la table, afin que les opérations du langage de manipulation de données (DML) se poursuivent sans interruption pendant les modifications du schéma.
Versions prises en charge
| Opération | Version minimale |
|---|---|
| Modification des types de colonnes sans verrouillage | V5.4.18-17108394 |
| Ajout ou suppression de colonnes sans verrouillage | V5.4.20-20241224 |
| Exécution de DDL sans verrouillage depuis Data Management (DMS) | V5.4.20-20241224 |
Pour connaître les règles de nommage des versions, consultez les Notes de version . Pour vérifier ou mettre à jour la version de votre instance, reportez-vous à la rubrique Affichage et mise à jour de la version d'une instance .
Opérations prises en charge
OMC prend en charge les opérations suivantes dans les bases de données en mode AUTO et en mode DRDS :
| Opération | Prise en charge par OMC |
|---|---|
MODIFY COLUMN — modification du type ou de la position d'une colonne |
Oui |
CHANGE COLUMN — renommage d'une colonne et modification de son type |
Oui |
ADD COLUMN — ajout d'une nouvelle colonne |
Oui |
DROP COLUMN — suppression d'une colonne |
Oui |
ADD INDEX |
Non |
DROP INDEX |
Non |
SET DEFAULT |
Non |
Vous pouvez combiner plusieurs opérations prises en charge au sein d'une seule instruction ALTER TABLE.
Limitations
Il est impossible de renommer les colonnes utilisées comme clés de sharding, clés de partitionnement ou clés primaires. Vous pouvez toutefois modifier leur type.
Il est impossible de supprimer les colonnes faisant partie d'une clé de sharding, d'une clé de partitionnement ou d'une clé primaire.
Il est impossible d'ajouter des contraintes
UNIQUEouKEYà une colonne nouvellement créée.Il est impossible de modifier les colonnes générées ou les colonnes référencées dans une expression de colonne générée.
Syntaxe
Ajoutez ALGORITHM=OMC à la fin de votre instruction ALTER TABLE pour exécuter l'opération sans verrouiller la table. Sans ce mot-clé, PolarDB-X revient à l'algorithme MySQL standard, qui peut acquérir des verrous de métadonnées bloquant les opérations DML.
ALTER TABLE tbl_name
alter_option [, alter_option] ...
ALGORITHM = OMC
alter_option: {
table_options
| ADD [COLUMN] col_name column_definition
[FIRST | AFTER col_name]
| CHANGE [COLUMN] old_col_name new_col_name column_definition
[FIRST | AFTER col_name]
| DROP [COLUMN] col_name
| MODIFY [COLUMN] col_name column_definition
[FIRST | AFTER col_name]
}
L'option ALGORITHM=OMC s'applique à toutes les clauses alter_option présentes dans la même instruction.
Exemples
Les exemples suivants utilisent une table en mode AUTO. Toutes les instructions intègrent ALGORITHM=OMC afin de s'exécuter sans verrouillage de la table.
Étape 1. Créez la table t1.
CREATE TABLE t1(a INT PRIMARY KEY, b TINYINT, c VARCHAR(10)) PARTITION BY KEY(a);
Étape 2. Modifiez les types des colonnes b et c dans une seule instruction.
ALTER TABLE t1 MODIFY COLUMN b INT, MODIFY COLUMN c VARCHAR(30), ALGORITHM=OMC;
Étape 3. Renommez la colonne b en d, modifiez son type et ajoutez une nouvelle colonne e de type BIGINT — le tout dans une seule instruction.
ALTER TABLE t1 CHANGE COLUMN b d INT, ADD COLUMN e BIGINT AFTER d, ALGORITHM=OMC;