Mateus wrote: > Estou vendo a discussão com relação ao Vacuum e tenho algumas dúvidas. > Primeiro sugiro que leia sobre VACUUM [1] no manual para entender o porquê e os conceitos por trás dele.
> 1 - Gostaria de saber qual a necessidade de executar o Vacuum diariamente ? > (i) reutilizar espaço ocupado por tuplas "mortas" (atualizadas ou removidas); (ii) proteger contra o reinício do ID de transação. (iii) atualizar estatísticas utilizadas pelo planejador de consultas. > 2- O auto vacuum não substitui o vacuum manual ? > Não totalmente. O autovac *não* faz um VACUUM FULL. Ele desempenha muito bem as tarefas de VACUUM, ANALYZE e FREEZE. > 3 - Como disse o vinicius tem que executar todos esses passos ? > - VACUUM e ANALYZE > - VACUUM FULL > - REINDEX {TABLE|DATABASE } > Não. O que você tem que executar quase que sempre é o ANALYZE [2] para que suas estatísticas não fiquem obsoletas e gerem planos de execução errados. O VACUUM [3] é aconselhado para quem faz muitas atualizações e/ou remoções; ele recicla (reaproveita) espaço que antes era utilizada por tuplas "mortas" (atualizadas ou removidas). O VACUUM FULL [3] é uma versão "agressiva" do VACUUM que reorganiza os dados utilizando o espaço deixado pelas tuplas "mortas". O REINDEX [4] pode ser utilizado para diminuir o espaço dos índices mas isso depende de outros fatores como o "fillfactor" utilizado. A "receita de bolo" dos DBAs é a seguinte: * ANALYZE: sempre (é importante manter as estatísticas atualizadas); * VACUUM: sempre que tiver alterações moderadas (por exemplo atualização em x% da tabela foo); * VACUUM FULL: dependendo do caso ele não é aconselhado (tabelas muito grandes -- milhões ou bilhões de registros); é utilizado para recuperar espaço em disco; * REINDEX: O VACUUM FULL incha o índice em geral, então esta é uma operação a ser executada após o VACUUM FULL. Uma outra opção muito pouco mencionada é o CLUSTER [5] + ANALYZE [2]. O CLUSTER faz operações similares ao VACUUM FULL + REINDEX. É importante ressaltar que o CLUSTER é *tão* agressivo quanto o VACUUM FULL, use-o com moderação. > > 4 - A versão 8.2.4 pode acontecer o reinício do ID de transação ou isso > so acontece em versões anteriores a 8.0 ? > Não. Versões anteriores a 8.1 (na 8.0 isso pode ocorrer). > 5- A cada bilhão de transações tenho que limpar as tabelas do meu BD ou > só executar o vacuum resolve ? > Só o VACUUM resolve [6]. Nas versões atuais o que o PostgreSQL faz é não deixar você executar operações que incrementem o ID de transação para não ocorrer o reinício. Vale lembrar que é a cada *2 bilhões* de transações. > 5.1 Se tenho que limpar as tabelas não posso ter um banco com mais > de 1 bilhão de registros em cada tabela ? > Pode, não se trata de registros e sim de transações. Veja [7]. > 6- Como melhorar a performance do vacuum ? > Isso só a equipe de desenvolvimento pode fazer, certo? O que você pode fazer é uma sintonia nos parâmetros do autovac para que ele não seja executado desnecessariamente (isso não melhora a performance do VACUUM mas das consultas). Tenha em mente que o VACUUM é uma das operações mais caras do PostgreSQL, use-o com moderação. ;) [1] http://www.postgresql.org/docs/8.2/static/routine-vacuuming.html [2] http://www.postgresql.org/docs/8.2/static/sql-analyze.html [3] http://www.postgresql.org/docs/8.2/static/sql-vacuum.html [4] http://www.postgresql.org/docs/8.2/static/sql-reindex.html [5] http://www.postgresql.org/docs/8.2/static/sql-cluster.html [6] http://www.postgresql.org/docs/8.2/static/routine-vacuuming.html#VACUUM-FOR-WRAPAROUND [7] http://www.postgresql.org/docs/faqs.FAQ_brazilian.html#item4.4 -- Euler Taveira de Oliveira http://www.timbira.com/ _______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral