暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

Oracle 11g新特性:Result Cache之一

原创 eygle 2007-09-04
491
在Oracle Database 11g中,Oracle引入了一个令人关注的新特性:结果集缓存(Result Cache)。

顾名思义,这个新特性的含义就是将查询的结果集Cache起来,以便随后相同的查询请求可以直接利用,从而避免了再次查询。今天开始来学习一下这个新特性。


进一步的Result Cache又可以分为:Server Result Cache 和 Client Result Cache

前者通过服务器端SGA来缓存结果集,后者通过客户端来缓存结果集。


缓存是提高性能的一个常用手段,可以说在Oracle数据库中,Cache无处不在

对于Client Result Cache:

在使用OCI应用程序时,可以通过客户端内存来缓存查询的结果集,缓存结果可以在所有session间共享,当查询反复执行时,查询结果可以直接从客户段的缓存中获得,从而极大地提高应用效率。

客户端结果集缓存并不使用服务器端的内存,不会对服务器的内存使用造成影响,这一点和Server Result Cache不同。

同Client Result Cache相关的视图主要有:

SQL> select * from dict where table_name like '%CLIENT_RESULT_CACHE%';



TABLE_NAME                    COMMENTS

------------------------------ ---------------------------------------------

CLIENT_RESULT_CACHE_STATS$    Synonym for CRCSTATS_$

GV$CLIENT_RESULT_CACHE_STATS  Synonym for GV_$CLIENT_RESULT_CACHE_STATS

V$CLIENT_RESULT_CACHE_STATS    Synonym for V_$CLIENT_RESULT_CACHE_STATS

同Client Result Cache相关的参数有:

SQL> show parameter client_result



NAME                                TYPE        VALUE

------------------------------------ ----------- ------------------------------

client_result_cache_lag              big integer 3000

client_result_cache_size            big integer 0

如果我们不想启用Client Result Cache的特性,可以设置参数client_result_cache_size为0即可。


对于Server Result Cache:

服务器端结果集缓存使用Shared Pool中的内存来进行结果缓存,这部分内存使用可以通过v$sgastat视图来查询观察:

SQL> select * from v$sgastat

  2  where lower(name) like '%result%';



POOL        NAME                            BYTES

------------ -------------------------- ----------

shared pool  Result Cache: State Objs        2852

shared pool  Result Cache: Memory Mgr          124

shared pool  Result Cache: Bloom Fltr        2048

shared pool  Result Cache: Cache Mgr          108


进一步的和Result Cache相关的视图有:

SQL> select * from dict where table_name like '%RESULT_CACHE%';



TABLE_NAME                    COMMENTS

------------------------------ ---------------------------------------------

CLIENT_RESULT_CACHE_STATS$    Synonym for CRCSTATS_$

GV$CLIENT_RESULT_CACHE_STATS  Synonym for GV_$CLIENT_RESULT_CACHE_STATS

GV$RESULT_CACHE_DEPENDENCY    Synonym for GV_$RESULT_CACHE_DEPENDENCY

GV$RESULT_CACHE_MEMORY        Synonym for GV_$RESULT_CACHE_MEMORY

GV$RESULT_CACHE_OBJECTS        Synonym for GV_$RESULT_CACHE_OBJECTS

GV$RESULT_CACHE_STATISTICS    Synonym for GV_$RESULT_CACHE_STATISTICS

V$CLIENT_RESULT_CACHE_STATS    Synonym for V_$CLIENT_RESULT_CACHE_STATS

V$RESULT_CACHE_DEPENDENCY      Synonym for V_$RESULT_CACHE_DEPENDENCY

V$RESULT_CACHE_MEMORY          Synonym for V_$RESULT_CACHE_MEMORY

V$RESULT_CACHE_OBJECTS        Synonym for V_$RESULT_CACHE_OBJECTS

V$RESULT_CACHE_STATISTICS      Synonym for V_$RESULT_CACHE_STATISTICS



11 rows selected.


相关的参数主要有:

SQL> show parameter result_cache_max



NAME                                TYPE        VALUE

------------------------------------ ----------- ------------------------------

result_cache_max_result              integer    5

result_cache_max_size                big integer 992K


类似的,result_cache_max_size参数可以被看作Server Result Cache的一个开关,如果设置为0,则Server Result Cache功能会被禁用。而result_cache_max_result则用于定义每个Cache结果集能够使用的Result Cache的百分比。


参数result_cache_mode用于控制Server Result Cache的方式,该参数有3个选项:Manual、AUTO、Force

SQL> show parameter result_cache_mo     



NAME                                TYPE        VALUE

------------------------------------ ----------- ------------------------------

result_cache_mode                    string      MANUAL


关于这个新特性的参考链接:

http://www.ningoo.net/2007/08/22/oracle11g_new_feature_server_result_cache2.htm

http://yangtingkun.itpub.net/post/468/391015

http://yangtingkun.itpub.net/post/468/391560


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论