Bloqueio de leituras e timeouts de conexão durante o VACUUM FULL em tabelas de alto tráfego

Ana Ferreira 0 Pontos de reputação
2026-09-25T16:22:38.66+00:00

A execução do VACUUM FULL em uma tabela de alto tráfego bloqueia as operações de leitura e causa timeouts nas conexões da aplicação. Como podemos utilizar o pg_repack para reduzir o bloat online sem tempo de inatividade?

Windows para empresas | Windows 365 Business
0 comentários Sem comentários

1 resposta

Classificar por: Mais útil
  1. Tracy Le 13,530 Pontos de reputação Assistente Independente
    2026-09-25T17:13:26.8533333+00:00

    Olá Ana Ferreira,

    O comando VACUUM FULL adquire um bloqueio exclusivo do tipo AccessExclusiveLock, impedindo tanto leituras quanto escritas durante todo o processamento. Para evitar indisponibilidade, o utilitário pg_repack cria uma nova tabela cópia, sincroniza as alterações simultâneas por meio de gatilhos temporários e realiza a substituição final dos arquivos com um bloqueio exclusivo mínimo de frações de segundo.

    Para utilizá-lo sem impactos, garanta previamente que a tabela possua uma chave primária válida e espaço livre em disco equivalente ao dobro do tamanho da relação. Em seguida, após registrar a extensão no banco com CREATE EXTENSION pg_repack, execute o binário externo indicando a tabela com o parâmetro -t e configure a opção wait-timeout para impedir que a aquisição do lock final fique presa atrás de transações longas. Se essas orientações ajudaram a otimizar sua base sem interrupções, convido você a aceitar a resposta.

    Tracy Le.

    Esta resposta foi útil?

    0 comentários Sem comentários

Sua resposta

As respostas podem ser marcadas como ‘Aceitas’ pelo autor da pergunta e ‘Recomendadas’ pelos moderadores, o que ajuda os usuários a saber a resposta que resolveu o problema do autor.