我已经有了一个带有12Gb内存的Ubuntu Linux系统,其中大部分(至less10Gb)可以分配给postgres。 该系统还具有6个磁盘15k SCSI RAID 10设置。
我试图优化的过程是双重的。
首先一个单线程的单连接将会对外部链接的2-4个表进行多次插入。
其次,许多不同的复杂查询针对结果数据运行,广泛地使用组。 这部分特别需要优化。
我有四个这样的进程一次运行,以便利用四核CPU,因此通常不会有超过5个并发连接(1个pipe理任务的备用)。
你会推荐什么configuration改变到默认的Postgresconfiguration?
我正在寻找像work_mem,shared_buffers等的最佳值
相关的doco
谢谢!
我会降低checkpoint_segments,每个将占用16MB,总共1GB(64 * 16MB)。 将1GB写入磁盘可能需要很长时间。 如果您有一个512MB RAM的RAID卡,只需使用50%的WALL段来获得非常好的写入性能:checkpoint_segments 16
还要将checkpoint_timeout降低到2或3分钟,以获得更好和更可预测的性能。
如果你有很多的INSERT,使用准备好的语句,在一个事务中插入大量的INSERT,甚至使用COPY。 COPY将为插入提供最佳性能。 为了获得最佳性能,每笔交易都必须安装在单个缓冲区中。 你select2MB的墙壁缓冲区,testing这个看看是否正常。
以下是我到目前为止所做的:
希望有人可以validation这些是合理的设置或改善这一点。
这个链接也是有用的: Tuning_Your_PostgreSQL_Server