Todos os produtos
Search
Central de documentação

PolarDB:Mecanismo de coleta de lixo

Última atualização: Jun 28, 2026

O PolarDB for PostgreSQL (Compatible with Oracle) usa o VACUUM para recuperar o espaço de armazenamento ocupado por tuplas mortas. O espaço recuperado não retorna ao sistema operacional, mas permanece disponível para que novas linhas inseridas ou atualizadas na mesma tabela o reutilizem.

Garbage collection mechanism

No diagrama, tuple1 e tuple2 são linhas válidas, enquanto unused representa linhas inválidas (tuplas mortas). Após a coleta de lixo, o espaço das tuplas mortas é liberado e fica disponível para reutilização.

Como funciona

O PolarDB for PostgreSQL (Compatible with Oracle) implementa o controle de concorrência multiversão (MVCC) ao manter várias versões de linhas. Cada operação UPDATE ou DELETE cria uma nova versão da linha e marca a anterior como inválida. Essas versões inválidas (tuplas mortas) se acumulam nos blocos de dados e exigem recuperação regular. Se não forem limpas a tempo, causam inchaço da tabela.

A coleta de lixo é acionada automaticamente quando o número de tuplas mortas ultrapassa um limiar calculado:

autovacuum threshold = autovacuum_vacuum_scale_factor * total_rows + autovacuum_vacuum_threshold

Por exemplo, com as configurações padrão (autovacuum_vacuum_scale_factor = 0.2, autovacuum_vacuum_threshold = 50), uma tabela com 100 linhas aciona o autovacuum quando as tuplas mortas excedem 70 (0.2 * 100 + 50). Ambos os parâmetros são configuráveis.

O VACUUM executa em segundo plano sem bloquear leituras ou gravações simultâneas. Para acionar a coleta de lixo imediatamente em uma tabela específica, execute:

VACUUM <table_name>;