使用postgres服务器端游标进行缓存

时间:2012-11-28 14:29:43

标签: postgresql

为了加速基于大型postgres集合的页面生成,我们将查询结果缓存在memcache中。但是,对于非常大或者很少访问的不可变集合,我想知道在postgres中保存服务器端游标是否是一种可行的备用缓存策略。

这个想法是,在集合中间服务页面之后,“next”和“prev”链接比集合中其他地方的随机查询更有可能被使用。我可以在附近有一个“WITH HOLD”光标,以避免(看似不可避免的)查询的大量启动成本吗?

我想知道服务器上的资源消耗。如果集合是不可变的,保存游标不需要很多资源,但我想知道postgres在这方面是如何优化的。任何进一步文件的链接都将受到赞赏。

2 个答案:

答案 0 :(得分:3)

你会遇到很多问题。

  • 您必须确保同一用户获得相同的SQL连接
  • 您必须创建清理策略
  • 游标将举行真空操作。
  • 您必须说服连接池不清除游标
  • 可能还有其他我未提及的问题。

简而言之:不要这样做。如何在后台预先计算下一页/上一页,并将其存储在memcached中?

答案 1 :(得分:3)

之前已经做出了一个很好的答案Best way to fetch the continuous list with PostgreSQL in web

问题类似,基本上你在服务器上存储一个带有分页令牌和过期的PK列表。