Todos os produtos
Search
Central de documentação

Hologres:Upgrade storage format of column-oriented table

Última atualização: Jun 28, 2026

Antes da versão V0.10 do Hologres, as tabelas orientadas a colunas utilizavam o formato legado Segment. A partir da V0.10, novas tabelas orientadas a colunas passaram a usar o formato AliORC (orc) por padrão, o que oferece melhor compressão de dados e menores custos de armazenamento. O Hologres V1.3 e versões posteriores não permitem mais a criação de tabelas no formato Segment. Este tópico descreve como verificar o formato de armazenamento atual das suas tabelas e migrar as existentes para o formato ORC.

Formatos de armazenamento

O Hologres armazena dados em três formatos:

Formato

Tipo de tabela

Descrição

segment

Orientada a colunas

Formato de arquivo legado por coluna. Era o padrão para tabelas orientadas a colunas em versões anteriores à V0.10. Não há mais suporte para novas tabelas na V1.3 e posteriores.

orc

Orientada a colunas

Formato colunar AliORC. Padrão para tabelas orientadas a colunas desde a V0.10. Oferece melhor compressão de dados e custos de armazenamento inferiores aos do formato segment.

sst

Orientada a linhas

Formato padrão para tabelas orientadas a linhas.

Nota

Não é possível converter uma tabela orientada a colunas em uma tabela orientada a linhas apenas alterando o formato de armazenamento. Para mudar o tipo de tabela, crie uma nova tabela com o schema desejado.

Pré-requisitos

Antes de começar, verifique se você tem:

  • Uma instância do Hologres executando a V0.10 ou superior. Verifique a versão da sua instância na página de detalhes da instância no console do Hologres. Caso sua instância esteja em uma versão anterior à V0.10, atualize-a primeiro. Se encontrar erros durante a atualização, consulte Erros comuns durante a preparação da atualização ou obtenha suporte online.

  • Uma tabela Segment do Hologres.

    Nota

    Para tabelas particionadas, execute o comando apenas na tabela pai.

Verificar o formato de armazenamento

Execute a seguinte instrução SQL para visualizar o formato de armazenamento de cada tabela no banco de dados atual:

SELECT *
FROM hologres.hg_table_properties
WHERE property_key = 'storage_format';

Exemplo de saída:

 table_namespace |     table_name     |  property_key  | property_value
-----------------+--------------------+----------------+----------------
 public          | part               | storage_format | segment
 public          | partsupp           | storage_format | segment
 public          | customer           | storage_format | segment
 public          | orders_row         | storage_format | sst
 public          | sp_orders          | storage_format | segment
 public          | sp_orders_20161231 | storage_format | segment
 public          | sp_orders_20171231 | storage_format | segment
 public          | sp_orders_20181231 | storage_format | segment
 public          | lineitem           | storage_format | segment
 public          | nation             | storage_format | orc
 public          | region             | storage_format | orc
 public          | supplier           | storage_format | orc
 public          | orders             | storage_format | orc
(13 rows)

Migre para o formato ORC as tabelas com property_value igual a segment.

Converter uma única tabela para o formato ORC

Importante

Após a execução do comando, um processo em segundo plano converte os dados para ORC de forma assíncrona. Esse processo consome recursos de CPU, I/O e largura de banda de rede, podendo afetar o desempenho de serviços online. Execute este comando fora dos horários de pico.

Execute o comando abaixo para alterar o formato de armazenamento de uma tabela:

call set_table_property ('table_name', 'storage_format', 'orc');

Substitua table_name pelo nome da sua tabela. O exemplo a seguir converte a tabela part:

call set_table_property ('public.part', 'storage_format', 'orc');

Limitações

  • Converta uma tabela por vez. Este comando não suporta conversão em lote.

  • Em tabelas particionadas, execute o comando somente na tabela pai.

Converter tabelas em lote do formato Segment para ORC

O Hologres V1.3.35 e versões posteriores suportam a conversão em lote do formato Segment para ORC. Utilize esta abordagem quando houver muitas tabelas Segment para migrar.

Importante

O comando de conversão em lote é executado de forma assíncrona e consome recursos de CPU e memória, o que pode impactar serviços de processamento em lote. Execute-o fora dos horários de pico.

Etapa 1: Identificar as tabelas Segment no banco de dados atual.

select * from hologres.hg_table_properties
where property_key = 'storage_format' and property_value like '%segment%';

Se a consulta retornar um resultado vazio, nenhuma tabela no banco de dados atual precisa de conversão.

Etapa 2: Iniciar a conversão em lote.

call hg_convert_segment_orc([<BATCH_SIZE>]);

O parâmetro BATCH_SIZE é opcional e especifica o número de tabelas a serem convertidas simultaneamente. O valor padrão é 100.

O comando funciona da seguinte maneira:

  1. Retorna imediatamente uma mensagem de sucesso e inicia a conversão em segundo plano.

  2. Converte até BATCH_SIZE tabelas simultaneamente por execução.

  3. Consome recursos de CPU e memória durante a conversão. Monitore essas métricas: uma queda no uso de CPU e memória indica que a conversão foi concluída. Dependendo do volume de dados, o processo pode levar de alguns minutos a várias horas.

  4. Caso o comando retorne um resultado vazio, todas as tabelas do banco de dados atual já foram convertidas ou estão em processo de conversão.

  5. Se o comando retornar continue to call hg_convert_segment_orc() if you want to convert all tables in current database., ainda restam tabelas Segment. Continue executando o comando até obter um resultado vazio.

Repita as Etapas 1 e 2 para cada banco de dados da sua instância.

Conversão automática ao criar uma tabela Segment (V1.3.29 e posteriores)

A partir do Hologres V1.3.29, se você executar uma instrução CREATE TABLE especificando o formato Segment, o sistema converterá automaticamente o formato para ORC e exibirá o seguinte aviso:

NOTICE:storage format 'segment' is no longer supported,converted to 'orc'