postgres中的共享缓冲区

时间:2011-05-30 11:23:56

标签: postgresql

我很好奇postgres中共享缓冲区所扮演的角色。共享缓冲区维护所有最近访问的磁盘页面和脏页面。如果需要引入新页面并且共享缓冲区中没有剩余空间,则会将受害者脏页写回磁盘。

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

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

2 个答案:

答案 0 :(得分:8)

Postgresql使用操作系统缓存和自己的数据缓存。根据您的数据库使用情况,这两个是有用的。

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

答案 1 :(得分:5)

我认为this link更清晰(并且更新)。

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