我的PostgreSQL服务器之一托管着几个(1-3)数据库,这些数据库接收恒定的数据流。数据不是特别结构化的,它等于当前时间以及该特定时刻的各种观测数据。数据速率相当高;对于一个数据库,它一天的工作量约为1 GB,而对于另一个数据库,它的工作量约为每天的十分之一。我不希望这个比率增加。读取性能的优先级要低得多,目前可以接受。
在日志中,我有此消息:
LOG: checkpoints are occurring too frequently (15 seconds apart)
HINT: Consider increasing the configuration parameter "checkpoint_segments".
此值当前设置为16,这是由提供的pgtune
。
我应该考虑哪些设置来提高写入性能?我希望保持尽可能的安全。考虑到传入的数据量,我可以接受一次失败就丢失一些最近的数据,只要其中的大部分数据是完整的即可。
编辑:我现在正在使用PostgreSQL 9.0,但是我计划升级到9.1。我不会发布硬件细节,因为尽管我承认它们的重要性,但最终我将需要在硬件非常多样化的多台机器上进行此优化。如果硬件对于答案是必不可少的,请给我基本信息,这样我就可以将答案应用于具有不同硬件配置的机器。
checkpoint_segments
按照建议增加了?发生了什么?