Linux / PHP / Java / Designer

As melhores dicas estão aqui.

Otimização – Uma Ferramenta Chamada Vacuum

| 0 comentários

O Vacuum é um utilitário manutenção do Banco de Dados.  Vacuum existe devido ao controle exclusivo de transação que o postgreSQL possui: o MVCC. As duas principais operações realizadas por essa ferramenta são:

  1. Recuperar espaço em disco devido a registros atualizados ou deletados;
  2. Atualizar as estatísticas utilizadas pelo otimizador para determinar o modo mais eficiente de executar uma consulta no PostgreSQL.

Quando realizamos um UPDATE o registro propriamente dito não é alterado; é incluído um novo registro clone. Sendo assim, o PostgreSQL marca o registro "original" (antigo) como expirado e realiza a alteração no clone. Se for um DELETE, o PostgreSQL apenas marca o registro deletado como expirado. Por isso, é normal vermos a base de dados crescer de forma descomunal no PostgreSQL e as pesquisas começarem a ficar cada vez mais lentas. Esta lentidão fica mais visível principalmente se a consulta não for indexada e for utilizado acesso sequencial, que faz com que o PostgreSQL verifique TODOS os registros (incluindo os expirados) para localizar o dado. No caso do Índice, ele é o responsável por localizar o dado.

Quando executamos o Vacuum, o mesmo remove fisicamente o dado expirado, pega os dois últimos registros da tabela e joga no lugar do “buraco”.

VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ tabela ]
VACUUM [ FULL ] [ FREEZE ]
                               [ VERBOSE ] ANALYZE [ tabela [ (coluna [, ...] )] ]

 

FULL Seleciona uma limpeza "completa", que pode recuperar mais espaço, mas é muito mais demorada e bloqueia a tabela em modo exclusivo.
FREEZE Seleciona um "congelamento" agressivo das tuplas.
VERBOSE Produz um relatório detalhado da atividade de limpeza de cada tabela.
ANALYZE Atualiza as estatísticas utilizadas pelo otimizador para determinar o modo mais eficiente de executar uma consulta.
tabela O nome da tabela específica a ser limpa. O padrão é que sejam todas as tabelas do banco de dados corrente.
coluna O nome da coluna específica a ser analisada. O padrão é que sejam todas as colunas.

Exemplo: VACUUM VERBOSE ANALYZE tabela_teste;

 

É muito importante usar diariamente o Vacuum, por isso, não se esqueça deste utilitário pois ele nos poupa dor de cabeça

Um dado importante: O Vaccum FULL usa acesso exclusive da Tabela, ou seja, poderá travar a tabela (lock), se necessitar ser executado com operadores conectados. Execute o vacuum sem o parâmetro FULL.

Deixe uma resposta

Campos requeridos estão marcados *.