Todos os produtos
Search
Central de documentação

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

Última atualização: Oct 12, 2026

O AliSQL oferece o recurso Online Modify Column, que delega a modificação do tipo de coluna à camada do motor 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 Linguagem de Definição de Dados (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 pelo 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 delega a modificação do tipo de coluna à camada do motor 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 executar uma das seguintes versões de banco de dados. Se a versão secundária do motor for anterior à necessária, atualize a versão secundária do motor.

  • MySQL 8.4

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

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

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

  • Limitação de motor: Apenas o motor InnoDB é compatível.

  • Limitação de tipo de coluna: Apenas modificação de tipo e extensão de comprimento são compatíveis 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, modificar uma coluna de INT para BIGINT é compatível, mas modificar de BIGINT para INT não é.

    • Aumento do comprimento de tipos de 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: Você não pode 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 Instâncias. Na barra de navegação superior, selecione a região onde a instância RDS está localizada. Em seguida, localize a instância RDS e clique 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 ativar 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

    Você pode especificar 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;