关于oracle result cache 结果集缓存的使用说明总结

oracle result cache 结果集缓存的使用说明总结

一、Result Set Caching 说明


1、概述:Oracle 从11g开始引入了结果集缓存(result cache)的新特性,用于存储经常使用的SQL语句和函数的查询结果,将来语句再执行的时候,oracle直接的访问内存得到结果

2、优点:重用相同的结果集,减少逻辑IO,提高系统性能

3、分类:oracle数据库引擎提供了三种结果集缓存,包括:服务器查询结果集缓存、pl/sql函数结果集缓存和客户端结果集缓存

4、应用场合:访问多行返回少数行的语句,非常适合只读、读>>写、典型OLTP等系统的功能;ORACLE建议应用仅仅对read only的表中使用result cache缓存功能

5、影响因素:在SGA中缓存sql语句的执行结果,相同sql再次执行时,直接从SGA直接读结果就可以了,不需要在去数据库中扫描索引,或是回表,计算之类的,
                          若sql中对应的对象(比如表)做了update,insert,delete或是ddl操作,相关所有sql的缓存结果集就自动失效了,重新刷新结果集缓存
                          result cache也有类似enqueue/lock的保护机制,RC enqueue就是拿来保护并发修改的。result cache他依赖是object level的,
                          既不是row level的,也不是block level的。任何DML/DDL(甚至包括grant)都会使基于这个object的result cache变为invalidate。
                          所以result cache只有对那些在平时几乎没有任何DML的只读表比较有用,可以减轻io的压力。
                          在平时读取阶段不是使用的shared pool latch,而是使用的result cache latch

6、使用限制: 

             (1)查询使用非确定性的函数,序列和临时表的结果集不会被缓存

             (2)查询违反了读一致性时结果集将不会被缓存
             (3)引用数据字典视图的查询的结果集不会被缓存
             (4)查询结果集大于可用缓存结果集可用空间的不被缓存;采用LRU算法来管理result cache。

二、服务器端结果集缓存


1、 相关参数说明

影响result cache开启使用的两个参数:result_cache_mode和result_cache_max_size

RESULT_CACHE_MODE 

参数有三个值:AUTO、MANUAL 和FORCE
(1) 设置为AUTO 时,优化程序将根据重复的执行操作确定将哪些结果存储在高速缓存中。
(2) 设置为MANUAL(默认值)时,必须使用RESULT_CACHE (v$sql_hint视图查看hint信息) 提示指定在高速缓存中存储特定结果。
(3) 设置为FORCE 时,所有结果都将存储在高速缓存中。

注:对于AUTO 和FORC
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值