O Online Modify Column (OMC) permite executar instruções ALTER TABLE no PolarDB-X sem bloquear a tabela. Assim, as operações de linguagem de manipulação de dados (DML) continuam ininterruptamente durante as alterações de esquema.
Versões compatíveis
|
Operação |
Versão mínima |
|
Alterar tipos de colunas sem bloqueio |
V5.4.18-17108394 |
|
Adicionar ou excluir colunas sem bloqueio |
V5.4.20-20241224 |
|
Executar DDL sem bloqueio pelo Data Management (DMS) |
V5.4.20-20241224 |
Para regras de nomenclatura de versões, consulte Notas de versão . Para verificar ou atualizar a versão da sua instância, consulte Visualize e atualize a versão de uma instância .
Operações compatíveis
O OMC oferece suporte às seguintes operações em bancos de dados nos modos AUTO e DRDS:
|
Operação |
Compatível com OMC |
|
|
Sim |
|
|
Sim |
|
|
Sim |
|
|
Sim |
|
|
Não |
|
|
Não |
|
|
Não |
Você pode combinar várias operações compatíveis em uma única instrução ALTER TABLE.
Limitações
Não é possível renomear colunas usadas como chaves de shard, chaves de partição ou chaves primárias, mas você pode alterar seus tipos.
Não é possível excluir colunas que fazem parte de uma chave de shard, chave de partição ou chave primária.
Não é possível adicionar restrições
UNIQUEouKEYa uma coluna recém-criada.Não é possível modificar colunas geradas nem colunas referenciadas em uma expressão de coluna gerada.
Sintaxe
Especifique ALGORITHM=OMC ao final da instrução ALTER TABLE para executar a operação sem bloquear a tabela. Sem essa palavra-chave, o PolarDB-X utiliza o algoritmo padrão do MySQL, o que pode adquirir bloqueios de metadados e impedir operações 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]
}
A cláusula ALGORITHM=OMC se aplica a todas as cláusulas alter_option presentes na mesma instrução.
Exemplos
Os exemplos abaixo utilizam uma tabela no modo AUTO. Todas as instruções usam ALGORITHM=OMC para garantir a execução sem bloqueio de tabela.
Passo 1. Crie a tabela t1.
CREATE TABLE t1(a INT PRIMARY KEY, b TINYINT, c VARCHAR(10)) PARTITION BY KEY(a);
Passo 2. Altere os tipos das colunas b e c em uma única instrução.
ALTER TABLE t1 MODIFY COLUMN b INT, MODIFY COLUMN c VARCHAR(30), ALGORITHM=OMC;
Passo 3. Renomeie a coluna b para d, altere seu tipo e adicione uma nova coluna e do tipo BIGINT — tudo em uma única instrução.
ALTER TABLE t1 CHANGE COLUMN b d INT, ADD COLUMN e BIGINT AFTER d, ALGORITHM=OMC;