xsb Oracle Blog

暂无签名

  • 博客访问: 3065650
  • 博文数量: 343
  • 用 户 组: 普通用户
  • 注册时间: 1970-01-01 08:00
个人简介

鏆傛棤浠嬬粛

文章分类

全部博文(343)

文章存档

2012年(1)

2011年(6)

2010年(2)

2009年(6)

2008年(32)

2007年(28)

2006年(182)

2005年(78)

2004年(8)

分类: Oracle

2008-12-04 16:23:20

在Oracle Database 11g中,Oracle引入了一个令人关注的新特性:结果集缓存(Result Cache)。
进一步的Result Cache又可以分为:Server Result Cache 和 Client Result Cache。
前者通过服务器端SGA来缓存结果集,后者通过客户端来缓存结果集。
Ref:

Oracle 11g新特性:Server Result Cache测试[zt]
Ref:

Oracle11g新特性-PLSQL函数缓存结果(一)[zt]

[@more@]

在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

阅读(3052) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册