Todos os produtos
Search
Central de documentação

PolarDB:O que é o recurso Instant modify column do PolarDB?

Última atualização: Jun 28, 2026

O MySQL padrão utiliza o algoritmo COPY para modificar o tipo de dados de uma coluna. Esse processo reconstrói toda a tabela em uma única thread e bloqueia todas as operações de escrita. Em tabelas grandes, isso pode levar de minutos a horas. O recurso Instant Modify Column do PolarDB for MySQL evita esse problema ao atualizar apenas os metadados da tabela, concluindo a operação em segundos, independentemente do tamanho da tabela.

O Instant Modify Column está em versão canary. Para utilizá-lo, acesse o Quota Center , localize a cota polarm_82_instant_modify_column e clique em Apply .

Versões suportadas

Parâmetros

Parâmetro

Nível

Descrição

Padrão

loose_innodb_polar_instant_modify_column_enable

Global

Ativa ou desativa o Instant Modify Column. Valores válidos: ON, OFF

OFF

loose_innodb_polar_instant_modify_column_max_times

Global

Número máximo de vezes que o recurso pode modificar tipos de coluna em uma única tabela. Intervalo: 1–64

16

Operações suportadas

O Instant Modify Column suporta apenas o aumento do comprimento da coluna para os seguintes tipos de dados. Consulte esta tabela para verificar se a sua operação é suportada antes de executá-la.

Tipo de coluna

Alteração suportada

Exemplo suportado

Exemplo não suportado

TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT

Aumento para um tipo inteiro mais amplo

INTBIGINT

BIGINTINT

VARCHAR(N)

Aumento de comprimento (N para N+M, onde M > 0)

VARCHAR(50)VARCHAR(300)

VARCHAR(300)VARCHAR(50)

CHAR(N)

Aumento de comprimento (N para N+M, onde M > 0)

CHAR(30)CHAR(50)

CHAR(50)CHAR(30)

As seguintes restrições adicionais se aplicam:

Restrição

Detalhes

Formato de linha

Apenas formato de linha COMPACT ou DYNAMIC

Colunas indexadas

Não é possível modificar colunas com índice

Tabelas particionadas

Não é possível modificar colunas em tabelas particionadas

Índices full-text ou espaciais

Não é possível modificar colunas em tabelas com índices full-text ou espaciais

DDL combinado

O Instant Modify Column não pode ser combinado com outras operações DDL na mesma instrução

Se a sua operação não atender a essas condições e você especificar ALGORITHM=INSTANT, o seguinte erro será retornado:

ERROR 1846 (0A000): ALGORITHM=INSTANT is not supported. Reason: Cannot change column type INPLACE. Try ALGORITHM=COPY/INPLACE
Dica: Antes de executar uma instrução DDL, use o EXPLAIN DDL para verificar se o algoritmo INSTANT é suportado para essa operação.

Modificar instantaneamente o tipo de uma coluna

Forçar o algoritmo INSTANT (recomendado)

Especifique ALGORITHM=INSTANT para impor o uso do Instant Modify Column. Caso a operação não possa utilizar o modo INSTANT, um erro será retornado imediatamente, em vez de haver uma queda silenciosa para um algoritmo mais lento.

CREATE TABLE t(a int);

-- Verify the current table structure
SHOW CREATE TABLE t;
-- Output:
-- CREATE TABLE `t` (
--   `a` int(11) DEFAULT NULL
-- ) ENGINE=InnoDB DEFAULT CHARSET=utf8

-- Modify the column type using the INSTANT algorithm
ALTER TABLE t MODIFY COLUMN a bigint DEFAULT NULL, ALGORITHM=INSTANT;

Permitir que o PolarDB escolha o algoritmo automaticamente

Omita a cláusula de algoritmo ou especifique ALGORITHM=DEFAULT para permitir que o PolarDB for MySQL selecione automaticamente o algoritmo mais eficiente.

ALTER TABLE test.test_table MODIFY COLUMN test_column bigint, ALGORITHM=DEFAULT;
ALTER TABLE test.test_table MODIFY COLUMN test_column bigint;

O PolarDB for MySQL avalia os algoritmos na seguinte ordem de prioridade:

Prioridade

Algoritmo

Comportamento

1 (mais alta)

INSTANT

Atualiza apenas metadados. Conclui em segundos, independentemente do tamanho da tabela. Não reconstrói a tabela.

2

INPLACE

Permite leituras e escritas simultâneas durante a operação DDL. O DDL paralelo pode acelerar ainda mais o processo.

3 (mais baixa)

COPY

Reconstrói toda a tabela. A tabela permanece somente leitura durante a operação.

Visualizar colunas modificadas instantaneamente

A tabela INFORMATION_SCHEMA.INNODB_INSTANT_COLUMNS registra todas as colunas do cluster atual que foram modificadas usando o Instant Modify Column. Apenas colunas alteradas por esse recurso aparecem na tabela.

SELECT * FROM INFORMATION_SCHEMA.INNODB_INSTANT_COLUMNS;

Schema da tabela:

SHOW CREATE TABLE INFORMATION_SCHEMA.INNODB_INSTANT_COLUMNS;
-- CREATE TEMPORARY TABLE `INNODB_INSTANT_COLUMNS` (
--   `TABLE_ID` bigint(21) unsigned NOT NULL DEFAULT '0',
--   `TABLE_NAME` varchar(193) NOT NULL DEFAULT '',
--   `SCHEMA_NAME` varchar(193) NOT NULL DEFAULT '',
--   `COLUMN_NAME` varchar(193) NOT NULL DEFAULT '',
--   `MTYPE` int(11) NOT NULL DEFAULT '0',
--   `PRTYPE` int(11) NOT NULL DEFAULT '0',
--   `LEN` int(11) NOT NULL DEFAULT '0',
--   `HAS_DEFAULT` int(1) NOT NULL DEFAULT '0',
--   `DEFAULT_VALUE` mediumblob,
--   `CURRENT_VERSION` int(11) NOT NULL DEFAULT '0',
--   `OLD_VERSION_INFO` blob
-- ) ENGINE=InnoDB DEFAULT CHARSET=utf8

Descrição dos campos:

Campo

Descrição

TABLE_ID

ID da tabela

TABLE_NAME

Nome da tabela

SCHEMA_NAME

Nome do schema

COLUMN_NAME

Nome da coluna

MTYPE

Tipo da coluna

PRTYPE

Tipo preciso da coluna ou atributos

LEN

Comprimento da coluna

HAS_DEFAULT

Indica se a coluna possui um valor padrão

DEFAULT_VALUE

Valor padrão da coluna

CURRENT_VERSION

Informações de versão da coluna

OLD_VERSION_INFO

Informações históricas de tipo da coluna

Se uma operação DDL que exige reconstrução completa da tabela (como DROP COLUMN ) for executada em uma coluna previamente modificada pelo Instant Modify Column, o registro dessa coluna será removido de INNODB_INSTANT_COLUMNS .