2012-10-19 100 views
4

我在Heroku上有一个Web应用程序,我试图理解添加一个Memcached实例与1GB内存和添加1GB内存到我的Postgres服务器之间的差异/折衷。Heroku Postgres RAM缓存vs Memcache内存

如果我添加了一个Memcached实例,我可能会使用Johnny Cache(用于Django - http://packages.python.org/johnny-cache/)。

我应该从两个选项中获得类似的性能改进吗?一般来说,使用内存缓存与增加Postgres缓存大小的优点是什么。 (据我所知,人们通常在数据库服务器上运行memcache,因此必须有一个)。

我很欣赏这可能是一个非常天真的问题,但我一直无法找到任何解决我通过谷歌混淆。

回答

1

为了获得最佳性能,Postgres需要足够的缓存来保留最常用的对象(索引,表)。所以设置shared_buffers有一个临界点。在那之后, 增加共享缓冲区没有多大帮助。

为文件系统级高速缓存留下部分RAM是很好的做法。

对于更见http://wiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Server

至于内存缓存,这是完全不同的野兽......它可以直接从应用程序中使用有超快速的非持久性键值存储。

所有这三个特性都使memcached与关系数据库(RDB)有所不同。

  • 超高速(RDB都没有)
  • 非持久性(RDB是)
  • 键值只(RDB更好)
+0

感谢。查询结果是否不被postgres缓存? – alan