我很好奇postgres中共享缓冲区所扮演的角色。共享缓冲区维护所有最近访问的磁盘页面和脏页面。如果需要引入新页面并且共享缓冲区中没有剩余空间,则会将受害者脏页写回磁盘。
但是,我对此声明感到困惑 - PostgreSQL依赖于操作系统进行缓存。 (http://www.varlena.com/GeneralBits/Tidbits/perf.html#shbuf)“
postgres如何依赖操作系统进行缓存?它如何改变共享缓冲区的行为?
答案 0 :(得分:8)
Postgresql使用操作系统缓存和自己的数据缓存。根据您的数据库使用情况,这两个是有用的。
操作系统缓存非常快但基本:它使用新数据删除旧数据。它对于非常通用的查询结果很有用。 PG缓存速度较慢(仍然比磁盘快得多),但它保留了最常用数据的使用计数器。适用于经常性结果/指数。
答案 1 :(得分:5)
我认为this link更清晰(并且更新)。
我的理解是,shared_buffers是PostgreSQL进程工作和共享信息的地方,但是超过一定的限制(服务器RAM的15%到25%),收益递减使得将更多RAM留给操作系统执行缓存本身更有趣