Bom dia, 
Pessoal, 

Estou realizando um teste para identificar tabelas inchadas (bloat table) na 
minha database. Porém fiquei com dúvida sobre o funcionamento do VACUUM. 
Tenho o seguinte cenário: 

-- create da tabela 
create table a ( nm text ); 

-- inserção de registros 
insert into a values (repeat(md5(random()::text),2) ); 
insert into a values (repeat(md5(random()::text),2) ); 
insert into a values (repeat(md5(random()::text),2) ); 
insert into a values (repeat(md5(random()::text),2) ); 
insert into a values (repeat(md5(random()::text),2) ); 
insert into a values (repeat(md5(random()::text),2) ); 
insert into a values (repeat(md5(random()::text),2) ); 
insert into a values (repeat(md5(random()::text),2) ); 
insert into a values (repeat(md5(random()::text),2) ); 
insert into a values (repeat(md5(random()::text),2) ); 

-- todos os valores sequenciamente colocados em páginas 
select ctid, nm from a; 

-- update nos dois registros do meio da tabela 
update a set nm = 'teste 2' where ctid = '(0,5)'; 
update a set nm = ' teste 2' where ctid = '(0,6)'; 

-- os valores presentes na páginas 0, index 5 e 6, foram para o fim, ocupando o 
index 11 e 12 
select ctid, nm from a; 

Com esse cenário testei as manutenções reindex, vacuum analyze, vacuum e vacuum 
full, nessa orderm, por fim, a única manutenção que reorganizou as páginas foi 
vacuum full. 
Pois bem, consultando a documentação do Postgres 9.0, está descrito que não 
deve-se utilizar de vacuum full, como forma de manutenção, deve-se realizar 
manutenções com vacuum (caso seja necessário) e/ou autovacuum. Resumindo, 
gostaria de entender melhor essa parte, porque essa tabela poderá ter muitos 
registros no futuro, e caso seja inserido muitos registros e atualiza alguns 
registros, terá páginas inteiras marcadas contendo "tuple dead", por fim, não 
fazendo o reaproveitamento das páginas, a tabela irá conter grandes quantidade 
de páginas utilizando muito espaço no Sistema Operacional, e fazendo com que a 
consulta sequencia faça varredura em todas páginas, como será controlado nessa 
situação? Somente com Fillfactor e Vacuum? Existe outros parâmetros de 
configuração para gerenciar esse cenário? 

Obrigado 

-- 
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a