A importância das rotinas de Vaccum no ambiente PostgreSQL

Nesse artigo, falaremos um pouco sobre as rotinas de Vaccum no PostgreSQL

POSTGRESQL - ADMINISTRAÇÃO

Jhonathan Turial

5/8/20241 min read

  • Organizar registros dentro do bloco liberando espaço interno.

  • Reorganizar a tabela recuperando espaço em disco.

  • Atualizar estatísticas utilizadas pelo otimizador.

  •  Atualizar os visibility e free space maps.

  • Proteger contra a perda de dados antigos, devido ao fenômeno “transaction ID wraparound”

Pode-se especificar várias tabelas em uma mesma operação de VACUUM.

As operações de VACUUM podem ser divididas em:

Razões de usar a rotina de vacuum

  • VACUUM normal

O VACUUM normal apenas faz a limpeza das linhas mortas, liberando espaço para reutilização e atualizando o free space maps. A operação de VACUUM normal pode ser executada em paralelo com as operações normais da base de dados. Não é possível modificar as estruturas de tabelas quando o vacuum está sendo executado.

  • VACUUM full

O VACUUM FULL reescreve toda a tabela em um novo arquivo, sem as linhas mortas, recuperando o espaço em disco e diminuindo o tamanho da mesma. O FULL requer um lock exclusivo na tabela em execução. O FULL sempre executa um freeze nas linhas, tornando a opção redundante

  • VACUUM freeze

A opção FREEZE faz um "congelamento" da linha, referente ao ID da transação e é equivalente a executar o vacuum com os parâmetros vacuum_freeze_min_age = 0 e vacuum_freeze_table_age = 0.