将数据作为缓存存储在oracle数据库中一段时间

时间:2012-04-02 06:42:49

标签: oracle oracle11g

我有 oracle查询需要10到20分钟,但我希望用户立即查看这些数据。数据存储时间一段时间,数据存在,并且每小时都会添加新数据。是否可以缓存这些数据,以便查询花费更少的时间或没有时间?

Note:I am using linked server

1 个答案:

答案 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%';