为什么PostgreSQL没有完全使用共享缓冲区



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

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

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

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

上。可用内存流量与由检查点限制启动的检查点之间存在相关性 - 图表上的所有高峰值都是检查点。目前尚不清楚为什么gress后在检查点期间保存到磁盘后会释放脏缓冲区

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

最新更新