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