为什么PostgreSQL没有充分使用共享缓冲区

时间:2018-08-07 09:56:35

标签: postgresql memory-consumption

我在94 GB内存服务器,120GB数据库和shared_buffers = 1GB上拥有Postgres 9.3。 Linux显示我有88GB的可用内存(可以,图表非常稳定),但是共享缓冲区的缓存未命中率约为10%。

所以我更改了shared_buffers = 16GB,我认为可用内存约为88G-15GB = 73GB。相反,可用内存在85GB-77GB范围内移动,因此以某种方式无缘无故驱逐了共享缓冲区。高速缓存未命中率约为5%,这仍然很糟糕。可用内存表: memory consumption

我无权安装pg_buffercache扩展,以澄清是否有任何缓冲区为空。

有什么想法为什么Postgress不使用所有共享内存和逐出缓冲区?

UPD。可用内存增长量和以检查点限制开始的检查点之间存在相关性-图表上所有高峰值都是检查点。目前尚不清楚为什么在检查点保存到磁盘后,postgress释放脏缓冲区

1 个答案:

答案 0 :(得分:0)

在PostgreSQL的32位版本上,这可能是http://rhaas.blogspot.com/2011/05/sharedbuffers-on-32-bit-systems.html中提到的进程地址空间限制的结果

相关问题