Após importar grandes volumes de dados ou executar muitas operações DELETE ou UPDATE, a fragmentação dos arquivos de dados pode degradar o desempenho de leitura e gravação. A compactação mescla arquivos pequenos em arquivos maiores, restaura a eficiência de armazenamento e melhora a velocidade das consultas.
Como funciona
O Hologres utiliza uma estrutura de dados semelhante a uma LSM-Tree (log-structured merge-tree) para gravações. Todas as gravações são do tipo append-only e convertem escritas aleatórias em sequenciais para maximizar o throughput de escrita. Com o tempo, esse processo gera muitos arquivos pequenos que exigem mesclagem por meio da compactação.
O Hologres oferece suporte a dois tipos de compactação:
Auto Compaction: compactação hierárquica com até cinco níveis. Quando um nível acumula mais de cinco arquivos, a compactação é acionada automaticamente e move o resultado para o próximo nível. Por exemplo, cinco arquivos no Nível 0 se fundem em um único arquivo (de até 64 MB por padrão) que passa para o Nível 1. O Auto Compaction mescla apenas arquivos dentro do mesmo nível, nunca entre níveis diferentes.
Full Compaction: mescla todos os arquivos de todos os níveis em novos arquivos (de 64 MB cada, por padrão) posicionados no nível final. A Full Compaction deve ser acionada manualmente.

Quando executar a Full Compaction
O Auto Compaction gerencia a mesclagem rotineira de arquivos continuamente em segundo plano. Execute a Full Compaction apenas quando a fragmentação de arquivos exceder a capacidade de resolução incremental do Auto Compaction, especificamente após uma das seguintes situações:
Importação de grandes volumes de dados offline
Execução de muitas operações
DELETEouUPDATE
A Full Compaction é uma operação administrativa que consome muitos recursos e exige quantidades significativas de I/O e CPU. A execução geralmente leva mais de 10 minutos. Execute-a durante períodos de baixa escrita para minimizar o impacto na carga de trabalho.
Executar Full Compaction
Pré-requisitos e limitações
A Full Compaction requer o Hologres V2.1 ou posterior. Para atualizar, consulte Atualizar uma instância ou obter suporte online para solicitar uma atualização.
Somente tabelas orientadas a colunas e tabelas híbridas de linhas e colunas oferecem suporte à Full Compaction.
Em tabelas híbridas de linhas e colunas, a Full Compaction se aplica apenas à parte do armazenamento em colunas.
Sintaxe
SELECT hologres.hg_full_compact_table(
'<schema_name.table_name>'
[,'max_file_size_mb=<value>']
);
Parâmetros
|
Parâmetro |
Descrição |
Obrigatório |
Padrão |
|
|
Nome da tabela a compactar |
Sim |
— |
|
|
Tamanho máximo em MB para cada arquivo de saída. Deve ser um número inteiro positivo. Definir esse valor muito baixo gera excesso de arquivos pequenos e torna as consultas mais lentas. Não altere este valor a menos que seja necessário. |
Não |
64 |
Exemplos
Execute a Full Compaction em public.lineitem:
SELECT hologres.hg_full_compact_table('public.lineitem');
Execute a Full Compaction em public.lineitem com tamanho máximo de arquivo de saída de 256 MB:
SELECT hologres.hg_full_compact_table(
'public.lineitem',
'max_file_size_mb=256'
);