Result Cache

result cache是用来存储查询sql得到的结果,给之后的重复查询来使用。通过缓存这些结果,oracle能避免那些重复的实际消耗,并且节省了大量的数据库操作,比如排序、合并、物理io和表关联等。result cache是内存里的一块单独区域,要么是SGA里或者客户端应用程序内存里。存放在里面的缓存结果在不同的sql语句或者不同的会话之间是可以共享的,除非缓存结果本身失效了。结果缓存对于应用程序来说是完全透明的,它不需要人为介入,而是直接由oracle内部来进行自动管理和维护。

对于不同的应用系统来说,result cache所带来的收益是不一样的,对于OLAP这种大数据量的分析统计系统来说效果最明显。缓存的最佳选择是查询了大量的数据,但最后却只返回少量的数据,例如数据仓库。除此之外,对于只读或者数据较少变化的SQL来说效果也会更好,因为当数据进行了变化后,相对于的缓存也会失效,而需要重新维护生成新的。

数据库相关配置

oracle与result cache相关的一些初始化参数如下

1
2
3
4
5
6
7
8
9
10
select name, value, isdefault
from v$parameter
where name like 'result_cache%';

NAME VALUE ISDEFAULT
-------------------------------------------------- --------------- ---------------------------
result_cache_mode MANUAL TRUE
result_cache_max_size 42958848 TRUE
result_cache_max_result 5 TRUE
result_cache_remote_expiration 0 TRUE
阅读更多