Olá pessoal, 

Tenho castrado 32MB para o parâmetro maintenance_work_mem e 3 para 
autovacuum_work_men. 
Porém ao executar um processo de autovaccum de uma tabela específica a memória 
utilizada de acordo com Sistema Operacional é de 24MB. 
Minha dúvida é sobre a quantidade de memória que um processo de autovaccum pode 
utilizar, ou seja, de acordo com a documentação postgres 
(http://www.postgresql.org/docs/9.1/static/runtime-config-resource.html#RUNTIME-CONFIG-RESOURCE-MEMORY),
 esse valor é igual a quantidade de memória disponível para manutenção, vezes a 
quantidade de processo autovaccum que podem rodar em paralelo. No meu caso 
resulta 96MB. Por fim o processo estava executando autovaccum a mais de 40min, 
utilizando no máximo 24MB, e apenas um processo de autovaccum rodando. O SGBD 
não deveria utilizar o total disponível para esse caso, levando em conta que 
além disso o servidor estava com bastante memória disponível? 

Meu postgres é versão 9.0.10. 

Configuração de autovacuum 

"autovacuum";"on" 
"autovacuum_analyze_scale_factor";"0.05" 
"autovacuum_analyze_threshold";"10" 
"autovacuum_freeze_max_age";"200000000" 
"autovacuum_max_workers";"3" 
"autovacuum_naptime";"60" 
"autovacuum_vacuum_cost_delay";"20" 
"autovacuum_vacuum_cost_limit";"-1" 
"autovacuum_vacuum_scale_factor";"0.2" 
"autovacuum_vacuum_threshold";"50" 
"log_autovacuum_min_duration";"-1" 

Configuração de memória 
"maintenance_work_mem";"32768" 
"work_mem";"24576" 
"shared_buffers";"47104" 
"temp_buffers";"2048" 

-- 
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a