我有 oracle查询需要10到20分钟,但我希望用户立即查看这些数据。数据存储时间一段时间,数据存在,并且每小时都会添加新数据。是否可以缓存这些数据,以便查询花费更少的时间或没有时间?
Note:I am using linked server
答案 0 :(得分:2)
是的,这是11g的新功能之一。 Oracle构建在RESULT_CACHE_MODE中。此模式允许我们能够缓存查询的结果集。
有三种初始化方法。 1.设置为sys变量(alter system) 2.当前会话变量(alter session) 3.在特定查询中使用提示
默认此参数设置为MANUAL。您可以在SQL会话中执行此查询来检查。
SQL> SELECT value FROM v$parameter WHERE name = 'result_cache_mode';
我个人的偏好是保持默认值MANUAL并提示我要缓存的查询,因为我只有一些我想要缓存的查询。通过这种方式,我可以选择缓存查询,默认情况下不会缓存任何查询。
要缓存特定查询,您需要在查询中设置/ * + RESULT_CACHE * /提示。这是一个例子。
SELECT /*+ RESULT_CACHE */ foo,
bar,
lorem
FROM dual
WHERE foo > 10;
希望这能帮到你!
编辑:
您还应检查这些系统变量以查看大小是否可接受,您还可以在系统变量result_cache_remote_expiration中查看和设置过期时间
SELECT name, value, isdefault
FROM v$parameter
WHERE name LIKE 'result_cache%';