我有一个无状态的user服务器,它需要2组用户输入来进行计算:
第1页:获取输入A
第2页:获取输入B
第3页:计算结果表单用户输入A和B
碰巧我的应用程序中的瓶颈是与用户输入A相关的查找。
为了加快速度,我在A上发出SQL请求,而"Page 3“稍后会这样做,同时我等待用户输入B,这样当用户在”Page 2“上单击submit时,来自”data A“的查找结果已经被缓存(为不耐烦的用户节省了2-5秒)。
我的问题
有没有可能让我的SQL查询以这样一种方式进行,即服务器执行查询并缓存它,而不返回任何东西,因为我只需要它在缓存中,以使最终请求快2-5秒。
发布于 2013-03-15 19:31:29
如果结果不是很大,最好是将用户状态保存在服务器端会话中。
更新:
这是db存储会话适合的情况之一(多个web服务器vs单个db服务器)。
保存结果:
insert into temp_result (session_id, a, b)
select %(session_id)s, a, b
from t检索它:
select a, b
from t
where session_id = %(session_id)s当会话过期或超时后,将其删除。
发布于 2013-03-15 19:27:46
PostgreSQL没有结果缓存,所以你不能预热它。
它确实有一个磁盘缓存。要预热结果,可以只运行丢弃结果的SELECT语句。使用PL/PgSQL PERFORM语句、无意义的聚合等。搜索"postgresql预热缓存“可能是有用的。
您可能还想查看实例化视图。PostgreSQL还不支持物化视图,但是您可以使用触发器和脚本来模拟它们。添加物化视图支持的补丁也在开发中。
https://stackoverflow.com/questions/15430953
复制相似问题