8

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

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

我想知道服务器上的资源消耗。如果集合是不可变的,那么保存游标应该不需要很多资源,但我想知道 postgres 在这方面的优化程度如何。任何指向进一步文档的链接将不胜感激。

4

2 回答 2

3

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

问题是相似的,本质上你在服务器上存储了一个带有分页令牌和过期时间的 PK 列表。

于 2012-12-17T16:04:39.990 回答
3

你会遇到很多问题。

  • 您必须确保同一用户获得相同的 sql 连接
  • 您必须制定清理策略
  • 光标将暂停真空操作。
  • 您必须说服连接池不清除游标
  • 可能还有其他我没有提到的问题。

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

于 2012-12-13T20:00:32.650 回答