加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

配置PostgreSQL以获得写入性能

发布时间:2020-12-13 16:23:36 所属栏目:百科 来源:网络整理
导读:我的一个PostgreSQL服务器托管了几个(1-3)数据库,这些数据库接收一个恒定的数据流.数据没有特别的结构,它相当于当前时间和该特定时刻的各种观察数据.数据率相当高;对于一个数据库,它每天大约一千兆字节,大约是另一个数据库的十分之一.我不指望这个比率会增加
我的一个PostgreSQL服务器托管了几个(1-3)数据库,这些数据库接收一个恒定的数据流.数据没有特别的结构,它相当于当前时间和该特定时刻的各种观察数据.数据率相当高;对于一个数据库,它每天大约一千兆字节,大约是另一个数据库的十分之一.我不指望这个比率会增加.读取性能优先级低得多,目前可以接受.

在日志中我有这样的消息:

LOG:  checkpoints are occurring too frequently (15 seconds apart)
HINT:  Consider increasing the configuration parameter "checkpoint_segments".

此值目前设置为16,这是由pgtune提供的.

我应该考虑提高写性能的设置是什么?我宁愿保持尽可能安全.考虑到进入的数据量,只要大部分数据完好无损,我就可以接受失败的一些最新数据.

编辑:我现在正在使用PostgreSQL 9.0,但我打算升级到9.1.我没有发布硬件细节,因为虽然我承认它们的重要性,但我最终还是需要在具有各种硬件的几台机器上进行优化.如果硬件对答案至关重要,请告诉我一般信息,以便我可以将答案应用于具有不同硬件配置的机器.

每天1千兆字节的写入负载并不高.全天传播,每秒大约50千字节.慢速USB拇指驱动器可以处理.我假设它更加突兀.如a_horse_with_no_name建议的那样,增加检查点段. 100左右并非与众不同.

然后将checkpoint_timeout增加到1小时,并查看将checkpoint_completion_target增加到接近1.0(100%)的值.完成目标告诉PostgreSQL如何积极地在后台写入,以便在运行检查点之前完成x%,这会强制所有数据从WAL中立即写出,并且会在系统发生时使系统变慢.

你通常不把它设置为100%的原因是,不止一次写入同一个块是很常见的,并且通过延迟WAL写入主存储,你可以防止同一个块被无理地写入两次.

如果你不太可能在你的超时发生之前不止一次写入同一个块,即你所做的就是插入然后将它设置得非常高,将其提高到0.9左右是有意义的.最糟糕的情况是,你会比你原本需要的更频繁地写一些,但检查点的影响将会大大减少.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读