Bem... com certeza eu devo ter sido motivo de piada para a maioria do
pessoal da lista, que provavelmente é DBA e têm sob sua responsabilidade
poucas instâncias de bancos de dados com terabytes de tamanho. Mesmo assim,
preciso adaptar as configurações de performance para nossos clientes, pois
preciso usar ao máximo o que os servidores deles podem oferecer.

Eu utilizo estas configurações como base:

*shared_buffers:*
entre 15% e 25% da memória RAM disponível (25% somente a partir de 2 GB de
RAM);

*temp_buffers:*
8 MB para menos de 2 GB de RAM, acima disso 16 MB;

*work_mem:*
4 MB até 512 MB de RAM; acima de 512 MB e até 2 GB uso 8 MB; acima disso 16
MB;

*maintenance_work_mem:*
sempre 50% da memória RAM disponível.

*fsync:*
sempre "on" - não podemos confiar nos discos dos clientes;

*synchonous_commit:*
"on" - idem

*full_page_writes:*
"on" - idem

*checkpoint_segments:
*4 para máquinas com discos pequenos e lentos (até 7200 RPM). Se o cliente
possui RAID, colocamos 16 segmentos.

*effective_cache_size:*
50% da memória RAM disponível.

* Estes valores foram definidos após testes com diversas bases de clientes,
a mais ou menos 2 anos com a versão 8.0 do PostgreSQL.

Eu entendo que deveria ser feito uma análise de performance individual para
cada cliente, mas administrar mais de 200 bases de dados é complicado, ainda
mais levando em consideração a falta de hardware de alguns. Nos clientes que
dispõe de um servidor dedicado estas análises são feitas e as configurações
são personalizadas.

Agora, gostaria de uma validação da comunidade para saber se não estou
colocando valores muito fora da realidade. E também saber se existe alguma
outra opção que possa impactar na performance para estes hardwares
"singelos".

NOTA: nosso ERP é bem dinâmico, rodando em clientes pequenos (de 1 a 4
clientes simultâneos) até clientes de médio porte (com mais de 60 clientes
simultâneos). Portanto a escolha de outro SGBD está fora de questão - como
já foi sugerido em outros fóruns.

-- 
Tiago J. Adami
Dois Vizinhos - Paraná - Brasil


2009/7/29 Tiago Adami <[email protected]>

> A muito tempo atrás eu troquei uns e-mails com um expert em PostgreSQL que
> se não me engano trabalhava em uma empresa chamada Varlena ou algo assim -
> infelizmente perdi o e-mail e não posso dar mais detalhes. Naquele tempo a
> versão atual era a 7.4, e ele me passou valores em percentuais para as
> principais configurações de performance do banco em situações onde o
> hardware não é muito parrudo. Funcionou bem, mas vejo que hoje existem
> muitas novas opções de performance que podem ser adotadas em hardwares de
> servidores modestos.
>
> Pois bem, trabalho para uma empresa que desenvolve um sistema ERP escrito
> em Visual Foxpro 9 e o banco é unicamente PostgreSQL (atualmente versão
> 8.2). Temos mais de 200 clientes por todo o Brasil, com bases de dados que
> variam de 10 Mb até 500 Mb (baseados no tamanho do backup realizado com as
> opções "-F c -Z 9" do pg_dump).
>
> Como atendemos clientes pequenos e médios, alguns clientes possuem máquinas
> de servidor que não passam de um Celeron 800 com 512 MB de RAM (máquinas com
> o sistema standalone). Entretanto, alguns clientes maiores possuem
> servidores Xeon Quad-Core com 4 Gb de RAM com RAID 0+1 ou 5.
>
> Baseado nesta faixa de hardware, o que vocês poderiam me recomendar em
> configurações para aumentar a performance utilizando a versão 8.2 ou
> superior do PostgreSQL?
>
>
> --
> Tiago J. Adami
> Dois Vizinhos - Paraná - Brasil
>
>
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a