postgres中的共享缓冲区

pre*_*ree 8 postgresql

我对postgres中共享缓冲区所起的作用感到好奇.共享缓冲区维护所有最近访问的磁盘页面和脏页面.如果需要引入新页面并且共享缓冲区中没有剩余空间,则会将受害者脏页写回磁盘.

但是,我对此声明感到困惑 - PostgreSQL依赖于操作系统进行缓存.(http://www.varlena.com/GeneralBits/Tidbits/perf.html#shbuf)"

postgres如何依赖于操作系统进行缓存?它如何改变共享缓冲区的行为?

小智 8

Postgresql使用OS缓存和自己的数据缓存.根据您的数据库用法,这两个是有用的.

操作系统缓存非常快但基本:它使用新数据删除旧数据.它对于非常通用的查询结果很有用.PG缓存速度较慢(仍然比磁盘快得多)但它保留了最常用数据的使用计数器.对于经常性结果/指数有用.


Mat*_*ard 5

我认为这个链接更清晰(并且更新).

我的理解是,shared_buffers是PostgreSQL进程工作和共享信息的地方,但是超过一定的限制(服务器RAM的15%到25%),收益递减使得将更多RAM留给操作系统来执行缓存本身更有趣.