Um dos meus servidores PostgreSQL hospeda vários (1-3) bancos de dados que recebem um fluxo constante de dados. Os dados não são particularmente estruturados, equivalem ao tempo atual e a uma variedade de dados observados para esse instante em particular. A taxa de dados é bastante alta; funciona cerca de um gigabyte por dia para um banco de dados, cerca de um décimo disso para outro. Não espero que essa taxa aumente. O desempenho da leitura é uma prioridade muito menor e atualmente é aceitável.
Nos logs, tenho esta mensagem:
LOG: checkpoints are occurring too frequently (15 seconds apart)
HINT: Consider increasing the configuration parameter "checkpoint_segments".
Atualmente, este valor está definido como 16, o que é cortesia pgtune
.
Quais são as configurações que devo considerar para melhorar o desempenho da gravação? Eu preferiria manter o máximo de segurança possível. Considerando o volume de dados recebidos, eu poderia aceitar perder alguns dados recentes em uma falha, desde que a maior parte dos dados estivesse intacta.
Edit: Estou usando o PostgreSQL 9.0 por enquanto, mas pretendo atualizar para a 9.1. Não estou publicando os detalhes do hardware porque, embora reconheça sua importância, em última análise, precisarei fazer essa otimização em várias máquinas com hardware muito diversificado. Se o hardware for essencial para a resposta, forneça as informações gerais para que eu possa aplicar a resposta a máquinas com diferentes configurações de hardware.
checkpoint_segments
conforme recomendado? O que aconteceu?