To speed page generation for pages based on large postgres collections, we cache query results in memcache. However, for immutable collections that are very large, or that are rarely accessed, I’m wondering if saving server side cursors in postgres would be a viable alternate caching strategy.
The idea is that after having served a page in the middle of a collection “next” and “prev” links are much more likely to be used than a random query somewhere else in the collection. Could I have a cursor “WITH HOLD” in the neighborhood to avoid the (seemingly unavoidable) large startup costs of the query?
I wonder about resource consumption on the server. If the collection is immutable, saving the cursor shouldn’t need very many resources, but I wonder how optimized postgres is in this respect. Any links to further documentation would be appreciated.
You’re going to run into a lot of issues.
In short: don’t do it. How about precalculating the next/previous page in background, and storing it in memcached?