Em 8 de agosto de 2013 14:07, Emerson Martins
<emersonmarti...@gmail.com>escreveu:

> Pessoal estou aqui mais uma vez precisando da ajuda de todos para entender
>> melhor como configurar esses parâmetros de memória no postgres.Se existe
>> alguma métrica específica para configura-los.
>>
>>  shared_buffers =
>>  effective_cache_size =
>>  work_mem =
>>  maintenance_work_mem =
>>
>> Tomando por base um servidor com 32GB de memória e SO Linux (Debian)
>>
>
>
2013/8/9 Dilamar Hoffmann <dilama...@gmail.com>
>
Bom dia Emerson,
>
> De acordo com esse valor de memória RAM os valores seriam:
>
> shared_buffers =  24GB
>

Quê? 24GB de shared_buffers? E um top-posting pra complementar. Pode isso
Arnaldo?

  effective_cache_size =  26GB
>  work_mem = 8MB
>  maintenance_work_mem = 1600MB
>
>

Meio chutado esse valores, não?!

Concordo que pode ter algumas situações onde esses valores podem ser bons
(apesar de ser em apenas 0,0001%, ao meu ver), mas não acho legal
apresentar valores dessa forma. O ideal, como já foi passado antes nos
links e comentários, é entender os valores e monitorar a efetividade das
alterações. Claro que se tem valores iniciais "meio genéricos" [1], que
seriam, em geral:

- shared_buffers = 15% a 20% da RAM, no caso dele eu começaria com 6GB e
subiria se necessário (não mais do que 10GB ao menos que bem provado). Veja
que existe a possibilidade de 500MB ser mais que suficiente (claro, para
bancos pequenos), então por que exagerar tanto no começo?

- effective_cache_size = o restante usado para cache do S.O. Em geral,
podemos dizer que seria total da RAM - shared_buffers - outras apps. Um bom
chute seria 50% da RAM, ou seja, 16GB, mas claro que também vai depender do
tamanho do banco e das tabelas.

- work_mem = esse é difícil dizer, talvez 8MB pode ser um valor inicial,
mas o ideal é monitorar o uso de arquivos temporários e aumentar se estiver
gerando muitos e muito grandes (o parâmetro log_temp_files é a maneira que
acho melhor analisar isso).

- maintenance_work_mem = é útil aumentar em SET's na sessão ao criar
índices, alter tables, etc. O padrão (no postgresql.conf) vai ser muito
útil para o autovacuum. Assim o mais agressivo que esse valor pode ser é:
tamanho da maior tabela, ou RAM disponível / 3 (o 3 seria na verdade o
autovacuum_max_workers). Eu, particularmente, não começaria com mais de
256MB (mas isso vai depender muito do banco e sua atividade - e.g. bancos
com grandes tabelas que sofram muitos UPDATEs, seria benéfico aumentar).

[1] http://wiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Server


Atenciosamente,
-- 
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a