问题描述
|
我对postgres中共享缓冲区的作用感到好奇。共享缓冲区维护所有最近访问的磁盘页面和脏页面。如果需要引入一个新页面,并且共享缓冲区中没有剩余空间,则将受感染的脏页面写回到磁盘上。
但是,我对此声明感到困惑-
PostgreSQL依赖于操作系统进行缓存。 (http://www.varlena.com/GeneralBits/Tidbits/perf.html#shbuf)\“
postgres如何依赖于OS进行缓存?以及它如何改变共享缓冲区的行为?
解决方法
Postgresql使用OS缓存和它自己的数据缓存。根据您的数据库使用情况,这两个很有用。
操作系统缓存非常快速,但是很基本:它会使用新的缓存删除旧数据。它对于非常通用的查询结果很有用。
PG缓存速度较慢(仍比磁盘快得多),但保留了最常用数据的使用情况计数器。对于重复结果/索引很有用。
, 我认为此链接更清晰(并且是最新的)。
我的理解是,shared_buffers是PostgreSQL处理和共享信息的地方,但是超过一定限制(服务器RAM的15%到25%)时,递减的收益使将更多RAM留给OS来执行缓存本身变得更加有趣。