Todos os produtos
Search
Central de documentação

Lindorm:ALTER TABLE

Última atualização: Jul 10, 2026

A instrução ALTER TABLE modifica o esquema de uma tabela, como adicionar ou remover colunas e definir atributos. As cláusulas compatíveis variam entre LindormTable e LindormTSDB.

Mecanismos e versões

A instrução ALTER TABLE aplica-se ao LindormTable e ao LindormTSDB. Não há restrições de versão.

Observações de uso

A operação ALTER TABLE não bloqueia a tabela. Ela permanece disponível para leitura e escrita durante toda a execução. No entanto, podem ocorrer erros de timeout ou breves oscilações de desempenho pelos seguintes motivos:

  • Durante uma operação DDL, cada shard é fechado e reaberto rapidamente para recarregar os metadados. Esse processo geralmente leva de 10 a algumas centenas de milissegundos. Se uma solicitação atingir um shard em reapertura, pode haver um pequeno atraso ou breve oscilação no desempenho. Recomendamos executar operações DDL fora dos horários de pico.

  • O resultado de uma operação DDL retorna somente após a aplicação da alteração em todos os shards. Em tabelas grandes, isso pode causar timeout no lado do cliente se o tempo limite configurado for curto. A operação continua em execução no servidor até a conclusão.

Sintaxe

alter_table_statement   ::= ALTER TABLE table_name alter_table_instruction

alter_table_instruction ::=   
  add_column_list
  | DROP COLUMN [ IF EXISTS ] column_name
  | SET table_options
  | COMPACT (idcName)?
   
add_column_list ::= ADD [COLUMN] column_def ( ',' ADD [COLUMN] column_def )*
column_def ::= column_name type [TAG]

Diferenças entre mecanismos

A instrução ALTER TABLE apresenta diferenças entre LindormTable e LindormTSDB. A tabela a seguir compara as cláusulas compatíveis.

Cláusula

LindormTable

LindormTSDB

ADD COLUMN

Compatível

Compatível

COMPACT

Compatível

Nota

Compatível com LindormTable 2.3.4 e posterior.

Não compatível

DROP COLUMN

Compatível

Nota

Compatível com LindormTable 2.6.6 e posterior.

Não compatível

SET table_options

Compatível

Não compatível

Cláusulas

ADD COLUMN

Tanto o LindormTable quanto o LindormTSDB são compatíveis com a cláusula ADD COLUMN.

As seguintes regras aplicam-se à adição de colunas:

  • Não é possível adicionar uma coluna como chave primária.

  • No LindormTSDB, apenas colunas de tag ou de campo podem ser adicionadas. Colunas de timestamp não são permitidas.

DROP COLUMN

A cláusula DROP COLUMN está disponível apenas no LindormTable 2.6.6 e posterior.

Nota

Caso não consiga atualizar sua instância para a versão 2.6.6 ou superior pelo console, entre em contato com o suporte técnico do Lindorm (ID do DingTalk: s0s3eg3).

A operação DROP COLUMN é assíncrona. Após a execução bem-sucedida da instrução ALTER TABLE, o sistema exclui imediatamente a coluna alvo, mas os dados dessa coluna só são limpos após a conclusão de uma operação COMPACT. Para acelerar a limpeza dos dados, execute manualmente as operações FLUSH e COMPACT. Não é possível adicionar uma coluna com o mesmo nome até que a limpeza dos dados seja totalmente concluída. Para mais informações, consulte FAQ.

SET table_options

Apenas o LindormTable é compatível com a cláusula SET table_options.

Para obter uma lista de atributos de tabela, consulte Atributos de tabela. Use a instrução SHOW TABLE VARIABLES para verificar se os atributos da tabela foram definidos corretamente. Para mais informações, consulte SHOW TABLE VARIABLES.

Importante

Ao modificar os atributos MUTABILITY e CONSISTENCY, observe o seguinte:

  • Antes de criar um índice, é possível modificar tanto MUTABILITY quanto CONSISTENCY.

  • Após a criação de um índice:

    • Não é possível modificar MUTABILITY.

    • É permitido alterar o valor de CONSISTENCY de eventual para strong, mas não é possível alterar de strong para eventual.

Para visualizar um exemplo, consulte Ativar colunas dinâmicas.

COMPACT

Apenas o LindormTable 2.3.4 e posterior é compatível com a cláusula COMPACT, que aciona uma compactação principal (major compaction).

Executar uma compactação principal mescla arquivos de dados, remove dados excluídos ou expirados, libera espaço em disco e melhora o desempenho de leitura e escrita. Essa operação consome muitos recursos.

  • Se você não especificar idcName:

    • Em instâncias de zona única, que possuem apenas um IDC, especificar idcName não surte efeito.

    • Em instâncias multizona, que possuem dois IDCs, as seguintes regras aplicam-se caso idcName não seja especificado:

      • Se a versão do seu LindormTable for anterior à 2.6.4.2, a compactação principal será executada apenas em idc1.

      • Se a versão do seu LindormTable for 2.6.4.2 ou posterior, a compactação principal será executada em todos os IDCs por padrão.

  • Se você especificar idcName, a compactação principal será executada no IDC indicado. É possível especificar vários nomes de IDC separados por vírgulas (,).

Para visualizar um exemplo, consulte Executar uma compactação principal.

Exemplos

Os exemplos nesta seção utilizam a tabela sensor criada com a seguinte instrução do tópico CREATE TABLE:

CREATE TABLE sensor (
    device_id VARCHAR NOT NULL,
    region VARCHAR NOT NULL,
    time BIGINT NOT NULL,
    temperature DOUBLE,
    humidity BIGINT,
    PRIMARY KEY(device_id, region, time)
);

Adicionar colunas

Adicione uma nova coluna n1 à tabela sensor.

ALTER TABLE sensor ADD COLUMN n1 DOUBLE;

Adicione uma coluna espaciotemporal à tabela de dados espaciotemporais roads.

  • Adicione uma única coluna espacial.

    ALTER TABLE roads ADD COLUMN g2 GEOMETRY(LINESTRING);
  • Adicione múltiplas colunas espaciais.

    ALTER TABLE roads ADD COLUMN g2 GEOMETRY(LINESTRING), g3 GEOMETRY(POLYGON);

Remover uma coluna

Remova a coluna n1 da tabela sensor.

ALTER TABLE sensor DROP COLUMN IF EXISTS n1;

Verifique o resultado

Execute a seguinte instrução para verificar o resultado:

DESCRIBE table sensor;

Ativar colunas dinâmicas

Ative o recurso de colunas dinâmicas para a tabela sensor.

ALTER TABLE sensor SET DYNAMIC_COLUMNS = 'true';
Nota

Para mais informações sobre colunas dinâmicas, consulte Colunas dinâmicas.

Definir consistência da tabela

Defina a consistência para a tabela de dados espaciotemporais roads.

ALTER TABLE roads SET 'CONSISTENCY' = 'strong';

Definir o TTL

  • Defina o TTL da tabela sensor em segundos (s).

    ALTER TABLE sensor SET TTL = '2592000';
  • Remova o TTL da tabela sensor.

    ALTER TABLE sensor SET TTL = '';

    Verifique o resultado

    No sistema de gerenciamento de cluster, acesse a página Overview. Clique em no nome da tabela desejada sob o banco de dados correspondente. Na seção Current table details, visualize o valor do parâmetro TTL. Para saber como acessar o sistema de gerenciamento de cluster, consulte Fazer login no sistema de gerenciamento de cluster.

Definir o algoritmo de compressão

  • Defina o algoritmo de compressão da tabela sensor como ZSTD.

    ALTER TABLE sensor SET COMPRESSION = 'ZSTD';
  • Defina o algoritmo de compressão da tabela sensor como NONE.

    ALTER TABLE sensor SET COMPRESSION = 'NONE';

    Verifique o resultado

    No sistema de gerenciamento de cluster, acesse a página Overview e clique em no nome da tabela desejada sob o banco de dados correspondente. Na seção Current table details, clique em View table properties para visualizar o valor do parâmetro COMPRESSION.

Configure separação de dados quentes e frios

Nota

Para mais informações sobre a separação de dados quentes e frios, consulte Introdução à separação de dados quentes e frios.

Definir o limite entre dados quentes e frios

Ingestion timestamp

Defina o limite de separação entre dados quentes e frios para a tabela sensor. O LindormTable determina se deve arquivar dados no armazenamento Capacity com base no timestamp de ingestão de cada linha.

-- Enable hot and cold data separation for the sensor table based on ingestion timestamp and set the boundary to one day.
ALTER TABLE sensor SET CHS = '86400', CHS_L2 = 'storagetype=COLD';

Verifique o resultado

Execute a instrução SHOW TABLE VARIABLES FROM sensor LIKE 'CHS%'; para visualizar os valores dos parâmetros CHS e CHS_L2. Para mais detalhes sobre a sintaxe do SHOW VARIABLES, consulte SHOW VARIABLES.

Custom time column

Importante

A separação de dados baseada em uma coluna de tempo personalizada possui limitações. Antes de utilizar esse recurso, revise as Observações de uso.

Defina a coluna de tempo personalizada time como limite de separação entre dados quentes e frios para a tabela sensor. O LindormTable determina se deve arquivar dados no armazenamento Capacity com base no timestamp do evento na coluna time de cada linha.

-- Enable hot and cold data separation for the sensor table based on a custom column, set the boundary to one day, and use the time column.
ALTER TABLE sensor SET CHS ='86400', CHS_L2 = 'storagetype=COLD', CHS_COLUMN = 'COLUMN=time';

Verifique o resultado

Execute a instrução SHOW TABLE VARIABLES FROM sensor LIKE 'CHS%'; para visualizar os valores dos parâmetros CHS, CHS_L2 e CHS_COLUMN. Para mais detalhes sobre a sintaxe do SHOW VARIABLES, consulte SHOW VARIABLES.

Remover o limite entre dados quentes e frios

Remova o limite de separação entre dados quentes e frios da tabela sensor.

ALTER TABLE sensor SET CHS = '', CHS_L2 = '';

Verifique o resultado

Execute a instrução SHOW TABLE VARIABLES FROM sensor LIKE 'CHS%'; para visualizar os valores dos parâmetros CHS e CHS_L2. Para mais detalhes sobre a sintaxe do SHOW VARIABLES, consulte SHOW VARIABLES.

Executar uma compactação principal

  • Execute uma compactação principal na tabela sensor.

    ALTER TABLE sensor COMPACT;
    Nota

    Para instâncias multizona, observe as seguintes regras:

    • Se a versão do seu LindormTable for anterior à 2.6.4.2, o sistema executa uma compactação principal em idc1 por padrão caso nenhum IDC seja especificado.

    • Se a versão do seu LindormTable for 2.6.4.2 ou posterior, o sistema executa uma compactação principal em todos os IDCs por padrão.

  • Execute uma compactação principal em idc2.

    ALTER TABLE sensor COMPACT 'idc2';
  • Execute uma compactação principal em idc1 e idc2.

    ALTER TABLE sensor COMPACT 'idc1,idc2';