ITPUB??ì3
ITPUB论坛 » Oracle新技术/11g » Oracle 11g的Server Result Cache特征

标题: [FAQ] Oracle 11g的Server Result Cache特征
在线/呼叫 小人物
Small Potatoes


精华贴数 0
个人空间 0
技术积分 1943 (816)
社区积分 40 (5304)
注册日期 2003-5-8
论坛徽章:25
ITPUB元老第18届世界杯(德国)纪念徽章会员2006贡献徽章授权会员2008北京奥运纪念徽章:摔跤2008北京奥运纪念徽章:田径
2008北京奥运纪念徽章:蹦床2008北京奥运纪念徽章:跳水ITPUB新首页上线纪念徽章   

发表于 2007-8-22 12:33 
Oracle 11g的Server Result Cache特征

--oracle 11g 结果集缓存特征
--日期:2007-08-22

--Oracle 11g的Server Result Cache特征可以重用相同的结果集,减少逻辑IO,提高系统性能.

--相关视图:
--result cache的统计信息.
V$RESULT_CACHE_STATISTICS

--result cache内存的使用情况.
V$RESULT_CACHE_MEMORY

--result cache里面的对象信息.
V$RESULT_CACHE_OBJECTS

--result cache对象的依赖信息.
V$RESULT_CACHE_DEPENDENCY

--对result_cache进行操作的包,具体参考文档.
DBMS_RESULT_CACHE

--相关参数:
PHP code:


SQL
show parameter result_cache



NAME                                 TYPE        VALUE

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

client_result_cache_lag              big integer 3000

client_result_cache_size             big integer 0

result_cache_max_result              integer     5

result_cache_max_size                big integer 4640K

result_cache_mode                    string      MANUAL

result_cache_remote_expiration       integer  &nb

RESULT_CACHE_MAX_SIZE指定result cache的大小,设置为0时那ORACLE会禁用result cache.
RESULT_CACHE_MODE参数控制使用reslult cache的模式,它有两个指 MANUAL,FORCE.
如果设置的值为MANUAL,用户必须用reslut_cache 提示才可以缓存结果集.
如果设置为FORCE,ORACLE会缓冲所有的结果,除非用户用了no_result_cache提示.
RESULT_CACHE_MAX_RESULT指定单个result set可以占用RESULT_CACHE_MAX_SIZE的比例,默认为5%.
client_result*的两个参数用于指定客户端也开辟结果集缓存.
result_cache_remote_expiration指定缓存远程对象的过期时间

--测试过程:
由于result_cache_mode默认为manual,所以必须使用hint才能cache result set.
PHP code:


SQL
select /*+ result_cache */ owner,count(*) from t_compress group by owner;



OWNER                            COUNT(*)

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

NEWHC                                3371

TSMSYS                                  3

PUBLIC                              23101

OUTLN                                   9

TEST                                    4

SYSTEM                                511

ORACLE_OCM                              8

EXFSYS                                303

DBSNMP                                 55

XDB                                   784

SYS                                 29401

WMSYS                               

--看下相关视图的内容:
PHP code:


SQL
select from V$RESULT_CACHE_STATISTICS;



        
ID NAME                                          VALUE

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

         
1 Block Size (Bytes)                             1024

         2 Block Count Maximum                            4640

         3 Block Count Current                              32

         4 Result Size Maximum 
(Blocks)                    232

         5 Create Count Success                              1

         6 Create Count Failure                              0

         7 Find Count                                        0

         8 Invalidation Count                                0

         9 Delete Count Invalid                              0

        10 Delete Count Valid                                0



10 rows selected
.

--也可以使用dbms_result_cache.memory_report来查看内存分配情况
PHP code:


SQL
exec dbms_result_cache.memory_report;

R e s u l t   C a c h e   M e m o r y   R e p o r t

[Parameters]

Block Size          1K bytes

Maximum Cache Size  
4640K bytes (4640 blocks)

Maximum Result Size 232K bytes (232 blocks)

[
Memory]

Total Memory 103528 bytes [0.020of the Shared Pool]

... 
Fixed Memory 5132 bytes [0.001of the Shared Pool]

... 
Dynamic Memory 98396 bytes [0.019of the Shared Pool]

....... 
Overhead 65628 bytes

....... Cache Memory 32K bytes (32 blocks)

........... 
Unused Memory 30 blocks

........... Used Memory 2 blocks

............... Dependencies 1 blocks (1 count)

............... 
Results 1 blocks

................... SQL     1 blocks (1 count)



PL/SQL procedure successfully completed.



SQLselect from V$RESULT_CACHE_MEMORY;



        
ID      CHUNK     OFFSET FRE  OBJECT_ID   POSITION

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

         
0          0          0 NO           0          0

         1          0          1 NO           1          0

         2          0          2 YES          0          0

         3          0          3 YES          0          0

         4          0          4 YES          0          0

         5          0          5 YES          0          0

         6          0          6 YES          0          0

         7          0          7 YES          0          0

         8          0          8 YES          0          0

         9          0          9 YES          0          0

        10          0         10 YES          0          0



        ID      CHUNK     OFFSET FRE  OBJECT_ID   POSITION

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

        
11          0         11 YES          0          0

        12          0         12 YES          0          0

        13          0         13 YES          0          0

        14          0         14 YES          0          0

        15          0         15 YES          0          0

        16          0         16 YES          0          0

        17          0         17 YES          0          0

        18          0         18 YES          0          0

        19          0         19 YES          0          0

        20          0         20 YES          0          0

        21          0         21 YES          0          0



        ID      CHUNK     OFFSET FRE  OBJECT_ID   POSITION

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

        
22          0         22 YES          0          0

        23          0         23 YES          0          0

        24          0         24 YES          0          0

        25          0         25 YES          0          0

        26          0         26 YES          0          0

        27          0         27 YES          0          0

        28          0         28 YES          0          0

        29          0         29 YES          0          0

        30          0         30 YES          0          0

        31          0         31 YES          0          0

--32个使用的块在那个chunk以及offset



SQL
select cache_id,name from v$result_cache_objects;



CACHE_ID                                NAME

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

TEST.T_COMPRESS                         TEST.T_COMPRESS

5bg7fxv3404w32v0vqv0bhgccf              select 
/*+ result_cache */ owner,count(*) from t_compress group by owner



--这个result cache 对象信息.



SQLselect from V$RESULT_CACHE_DEPENDENCY;



 
RESULT_ID  DEPEND_ID  OBJECT_NO

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

         
1          0      58797



--对象依赖信息.



--
重新执行语句复用reselt set.

SQLselect /*+ result_cache */ owner,count(*) from t_compress group by owner;

12 rows selected.



Execution Plan

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

Plan hash value2456935480

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

Id  Operation           Name                       Rows  Bytes Cost

(%CPU)| Time     |

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



|   
SELECT STATEMENT    |                            |    12 |    72 |    79

   
(8)| 00:00:01 |



|   
|  RESULT CACHE       5bg7fxv3404w32v0vqv0bhgccf |       |       |

      |          |



|   
|   HASH GROUP BY     |                            |    12 |    72 |    79

   
(8)| 00:00:01 |



|   
|    TABLE ACCESS FULLT_COMPRESS                 57865 |   339K|    74

   
(2)| 00:00:01 |



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

Result Cache Information (identified by operation id):

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



   
column-count=2dependencies=(TEST.T_COMPRESS); parameters=(nls); name="s

elect 
/*+ result_cache */ owner,count(*) from t_compress group by owner"



Statistics

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

          
0  recursive calls

          0  db block gets

          0  consistent gets

          0  physical reads

          0  redo size

         12  rows processed



--不需要再去读取数据,注意name是cache_id.



SQLselect owner,count(*) from t_compress group by owner;



12 rows selected.



Execution Plan

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

Plan hash value2456935480

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

Id  Operation          Name       Rows  Bytes Cost (%CPU)| Time

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

|   
SELECT STATEMENT   |            |    12 |    72 |    79   (8)| 00:00:01

|   |  HASH GROUP BY     |            |    12 |    72 |    79   (8)| 00:00:01

|   |   TABLE ACCESS FULLT_COMPRESS 57865 |   339K|    74   (2)| 00:00:01

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

Statistics

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

        
258  consistent gets

         12  rows processed

         

--去掉hints没法使用cache result set.



--
修改result_cache_mode为force

SQL
alter session set result_cache_mode=force



Session altered.



SQLselect owner,count(*) from t_compress group by owner;



12 rows selected.



Execution Plan

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

Plan hash value2456935480

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

Id  Operation           Name                       Rows  Bytes Cost

(%CPU)| Time     |

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

|   
SELECT STATEMENT    |                            |    12 |    72 |    79

   
(8)| 00:00:01 |



|   
|  RESULT CACHE       5bg7fxv3404w32v0vqv0bhgccf |       |       |

      |          |



|   
|   HASH GROUP BY     |                            |    12 |    72 |    79

   
(8)| 00:00:01 |



|   
|    TABLE ACCESS FULLT_COMPRESS                 57865 |   339K|    74

   
(2)| 00:00:01 |



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

Result Cache Information (identified by operation id):

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



   
column-count=2dependencies=(TEST.T_COMPRESS); parameters=(nls); name="s

elect owner
,count(*) from t_compress group by owner"



Statistics

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

          
1  recursive calls

          0  db block gets

          0  consistent gets

          0  physical reads

          0  redo size

        678  bytes sent via SQL
*Net to client

        420  bytes received via SQL
*Net from client

          2  SQL
*Net roundtrips to/from client

          0  sorts 
(memory)

          
0  sorts (disk)

         
12  row

--这种情况下才能使用result set.


只看该作者    顶部
在线/呼叫 小人物
Small Potatoes


精华贴数 0
个人空间 0
技术积分 1943 (816)
社区积分 40 (5304)
注册日期 2003-5-8
论坛徽章:25
ITPUB元老第18届世界杯(德国)纪念徽章会员2006贡献徽章授权会员2008北京奥运纪念徽章:摔跤2008北京奥运纪念徽章:田径
2008北京奥运纪念徽章:蹦床2008北京奥运纪念徽章:跳水ITPUB新首页上线纪念徽章   

发表于 2007-8-22 12:35 
一个测试例子,欢迎大家指证.


只看该作者    顶部
离线 xzh2000
仙人抚我须 结发授长生



精华贴数 13
个人空间 0
技术积分 46382 (14)
社区积分 5114 (276)
注册日期 2002-7-17
论坛徽章:29
现任管理团队成员ITPUB元老授权会员2008北京奥运纪念徽章:柔道2008北京奥运纪念徽章:帆船生肖徽章2007版:虎
ITPUB新首页上线纪念徽章数据库板块每日发贴之星数据库板块每日发贴之星数据库板块每日发贴之星数据库板块每日发贴之星数据库板块每日发贴之星

发表于 2007-8-22 13:28 
good job.


__________________
过目即忘  插柳成荫
只看该作者    顶部
离线 vongates
开门


精华贴数 3
个人空间 0
技术积分 19436 (48)
社区积分 10046 (150)
注册日期 2002-11-28
论坛徽章:81
现任管理团队成员2008年新春纪念徽章    
      

发表于 2007-8-22 13:30 
建议授精


__________________
只看该作者    顶部
离线 NinGoo
何乡是吾乡


来自 杭州
精华贴数 4
个人空间 235
技术积分 12750 (88)
社区积分 4338 (316)
注册日期 2004-12-7
论坛徽章:91
现任管理团队成员ITPUB元老2008北京奥运纪念徽章:水球2008北京奥运纪念徽章:摔跤2008北京奥运纪念徽章:网球2008北京奥运纪念徽章:篮球
2008北京奥运纪念徽章:艺术体操2008北京奥运纪念徽章:拳击2008北京奥运纪念徽章:田径2008北京奥运纪念徽章:乒乓球2008北京奥运纪念徽章:体操2008年新春纪念徽章

发表于 2007-8-22 13:38 
呵呵,刚看到。早知道我刚这篇就不写了

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


__________________
只看该作者    顶部
离线 teddyboy
永远的DBA


精华贴数 0
个人空间 0
技术积分 4724 (277)
社区积分 210 (2257)
注册日期 2002-6-13
论坛徽章:6
ITPUB元老会员2007贡献徽章会员2006贡献徽章授权会员ITPUB新首页上线纪念徽章数据库板块每日发贴之星
      

发表于 2007-8-22 13:45 
支持,顶!注意排版,ningoo那个看起来舒服多了,


__________________
只看该作者    顶部
离线 teddyboy
永远的DBA


精华贴数 0
个人空间 0
技术积分 4724 (277)
社区积分 210 (2257)
注册日期 2002-6-13
论坛徽章:6
ITPUB元老会员2007贡献徽章会员2006贡献徽章授权会员ITPUB新首页上线纪念徽章数据库板块每日发贴之星
      

发表于 2007-8-22 13:50 


QUOTE:
最初由 NinGoo 发布
呵呵,刚看到。早知道我刚这篇就不写了

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


PHP code:


result_cache_mode,如果取值为auto,则优化器会自动判断是否将查询结果缓存;

.............

有疑问,文档上并没有说这个auto取值。


__________________
只看该作者    顶部
离线 NinGoo
何乡是吾乡


来自 杭州
精华贴数 4
个人空间 235
技术积分 12750 (88)
社区积分 4338 (316)
注册日期 2004-12-7
论坛徽章:91
现任管理团队成员ITPUB元老2008北京奥运纪念徽章:水球2008北京奥运纪念徽章:摔跤2008北京奥运纪念徽章:网球2008北京奥运纪念徽章:篮球
2008北京奥运纪念徽章:艺术体操2008北京奥运纪念徽章:拳击2008北京奥运纪念徽章:田径2008北京奥运纪念徽章:乒乓球2008北京奥运纪念徽章:体操2008年新春纪念徽章

发表于 2007-8-22 13:53 


QUOTE:
最初由 teddyboy 发布
PHP code:


result_cache_mode,如果取值为auto,则优化器会自动判断是否将查询结果缓存;

.............

有疑问,文档上并没有说这个auto取值。


这个我估计是文档有bug

请看

SQL> alter session set result_cache_mode=a;
ERROR:
ORA-00096: invalid value A for parameter result_cache_mode, must be from among FORCE, MANUAL, AUTO


__________________
只看该作者    顶部
离线 teddyboy
永远的DBA


精华贴数 0
个人空间 0
技术积分 4724 (277)
社区积分 210 (2257)
注册日期 2002-6-13
论坛徽章:6
ITPUB元老会员2007贡献徽章会员2006贡献徽章授权会员ITPUB新首页上线纪念徽章数据库板块每日发贴之星
      

发表于 2007-8-22 13:58 


QUOTE:
最初由 NinGoo 发布


这个我估计是文档有bug

请看

SQL> alter session set result_cache_mode=a;
ERROR:
ORA-00096: invalid value A for parameter result_cache_mode, must be from among FORCE, MANUAL, AUTO


哦 我没有折腾 只是浏览了一遍新特性的文档。


__________________
只看该作者    顶部
在线/呼叫 小人物
Small Potatoes


精华贴数 0
个人空间 0
技术积分 1943 (816)
社区积分 40 (5304)
注册日期 2003-5-8
论坛徽章:25
ITPUB元老第18届世界杯(德国)纪念徽章会员2006贡献徽章授权会员2008北京奥运纪念徽章:摔跤2008北京奥运纪念徽章:田径
2008北京奥运纪念徽章:蹦床2008北京奥运纪念徽章:跳水ITPUB新首页上线纪念徽章   

发表于 2007-8-22 15:34 


QUOTE:
最初由 teddyboy 发布
支持,顶!注意排版,ningoo那个看起来舒服多了,

改了


只看该作者    顶部
相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问