Todos os produtos
Search
Central de documentação

ApsaraDB RDS:Modificação online de tipo de coluna

Última atualização: Jun 26, 2026

O AliSQL oferece o recurso Online Modify Column, que transfere a operação de modificação de tipo de coluna para a camada do mecanismo InnoDB. Isso permite alterações online sem bloquear operações de leitura e escrita.

Como funciona

Contexto: Desde o MySQL 5.6, a maioria das instruções de Data Definition Language (DDL) suporta Online DDL, o que permite operações de leitura e escrita em uma tabela durante o processo de DDL. No entanto, mesmo no MySQL 8.0, modificar o tipo de uma coluna exigia o método COPY DDL. O AliSQL aprimora o MySQL da comunidade ao implementar o recurso Online Modify Column, que permite modificar colunas usando o método INPLACE DDL.

Introdução: O recurso Online Modify Column do AliSQL elimina a necessidade de ler e inserir linhas individualmente na camada do servidor, processo executado pelo método COPY. Em vez disso, ele transfere a operação de modificação de tipo de coluna para a camada do mecanismo InnoDB e reutiliza a estrutura de execução INPLACE DDL da comunidade. Todo o processo é idêntico a outras operações INPLACE DDL, permitindo operações normais de leitura e escrita na tabela durante a modificação.

Pré-requisitos e limitações

Para usar o recurso Online Modify Column, sua instância deve utilizar uma das seguintes versões de banco de dados. Se a versão secundária do mecanismo for anterior à necessária, atualize a versão secundária do mecanismo.

  • MySQL 8.4

  • MySQL 8.0: versão secundária do mecanismo 20250731 ou posterior.

  • MySQL 5.7: versão secundária do mecanismo 20251031 ou posterior.

O recurso Online Modify Column está sujeito às seguintes limitações:

  • Limitação de mecanismo: Apenas o mecanismo InnoDB tem suporte.

  • Limitação de tipo de coluna: Apenas modificação de tipo e extensão de comprimento têm suporte para os seguintes tipos de dados:

    • Aumento do tamanho de tipos inteiros (modificação de tipo): Inclui a alteração de um tipo inteiro menor para um maior, como TINYINT, SMALLINT, MEDIUMINT, INT e BIGINT. Por exemplo, há suporte para modificar uma coluna de INT para BIGINT, mas não de BIGINT para INT.

    • Aumento do comprimento de tipos string (extensão de comprimento): Aplica-se à extensão do comprimento dos tipos CHAR e VARCHAR. Por exemplo, para modificar uma coluna de CHAR(M) para CHAR(N), N deve ser maior que M.

  • Outras limitações: Não é possível modificar uma coluna que faça parte de uma chave de partição.

Gerenciamento de parâmetros

Parâmetros

O parâmetro a seguir controla o recurso Online Modify Column:

Parâmetro

Descrição

loose_rds_upgrade_datatype_online_enable

  • Descrição: Ativa ou desativa o recurso Online Modify Column.

  • Escopo: Global.

  • Tipo de dados: Boolean.

  • Valor padrão: OFF.

  • Valores válidos: ON ou OFF.

  • Reinicialização necessária: Não.

Modifique parâmetros

  1. Acesse a página Instances. Na barra de navegação superior, selecione a região onde reside a instância RDS. Em seguida, localize a instância RDS e clique em no ID da instância.

  2. No painel de navegação à esquerda, clique em Parameter Settings.

  3. Na aba Editable Parameters, localize o parâmetro desejado e configure seu valor.

  4. Clique em OK e, em seguida, clique em Submit Parameters. Na caixa de diálogo exibida, selecione quando as alterações entrarão em vigor.

Uso

Para ative o recurso Online Modify Column, defina o parâmetro loose_rds_upgrade_datatype_online_enable como ON no console. Os exemplos a seguir utilizam uma tabela chamada t1 com a seguinte estrutura:

CREATE TABLE `t1` (
  `id` int NOT NULL,
  `c1` int DEFAULT NULL,
  `c2` char(10) DEFAULT NULL,
  `c3` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB;

Especifique o algoritmo INPLACE

Especifique o algoritmo INPLACE para modificações online de colunas, incluindo modificação de tipo e extensão de comprimento:

  • Modificação de tipo: Altere o tipo da coluna c1 para bigint.

  • Extensão de comprimento: Estenda o comprimento das colunas c2 e c3.

-- Type modification: Use the INPLACE algorithm to modify the c1 column type.
ALTER TABLE `t1` MODIFY `c1` bigint DEFAULT NULL, ALGORITHM=INPLACE;

-- View the result.
SHOW CREATE TABLE `t1`\G
*************************** 1. row ***************************
       Table: t1
Create Table: CREATE TABLE `t1` (
  `id` int NOT NULL,
  `c1` bigint DEFAULT NULL,
  `c2` char(10) DEFAULT NULL,
  `c3` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3
1 row in set (0.00 sec)

-- Length extension: Use the INPLACE algorithm to extend the length of the c2 and c3 columns.
ALTER TABLE `t1` MODIFY `c2` char(20) DEFAULT NULL, ALGORITHM=INPLACE;
ALTER TABLE `t1` MODIFY `c3` varchar(100) DEFAULT NULL, ALGORITHM=INPLACE;

-- View the result.
SHOW CREATE TABLE `t1`\G
*************************** 1. row ***************************
       Table: t1
Create Table: CREATE TABLE `t1` (
  `id` int NOT NULL,
  `c1` bigint DEFAULT NULL,
  `c2` char(20) DEFAULT NULL,
  `c3` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3
1 row in set (0.00 sec)

Não especifique um algoritmo

Se nenhum algoritmo for especificado, o sistema selecionará automaticamente o algoritmo mais adequado para a modificação do tipo de coluna.

ALTER TABLE `t1` MODIFY `c1` bigint DEFAULT NULL;