【博客文章2022】Result Cache的注意事项 Author: Bo Tang 1. 概述: Result Cache通过把复杂计算结果缓存于共享池中来提高SQL语句执行的性能。配置Result Cahce主要是配置两个系统参数:result_cache_mode和result_cache_max_size。如果配置不出来,大部分原因是因为result_cache_max_size可能被设为0了。它应该被设置为32K的倍数,如果为0则Result Cache功能失效。 另外一个参数result_cache_max_result也有一定影响。可以把它设为5。它取0-100之间的值,指定最大内存使用比例。 查看Result Cache情况主要有三种手段:1. dbms_result_cache.status()。 2.dbms_result_cache.memory_report。3. v$result_cache_objects。 2. 准备实验环境: apps用户方案的获取,请参考这个帖 https://www.botangdb.com/mytec/mytec_sqltuning/202204/00900085.html 3. 加载Result Cache: 打开一个终端窗口,以apps用户登录(注意:除了使用result_cache_mode为force的这种方式外,还可以使用更改表的result cache模式alter table t1 result_cache (mode force)和使用/*+ result_cache */这两种方式,本文使用result_cache_mode参数模式):
以sys身份查看Result Cache情况:
4. 第2次执行,使用Result Cache:
可以观察到,第2次执行所有的IO都消失了。速度提升明显。 5. 执行DML,无效化Result Cache:
以sys身份查看Result Cache情况:
6. 第3次执行,更新Result Cache:
以sys身份查看Result Cache情况:
7. 第4次执行,使用Result Cache:
8. 第5/6次执行,手工by pass Result Cache:
取消by pass:
9. 跨会话PL/SQL函数Result Cache: 以apps用户登录会话1:
另外一个会话使用该函数:
|
GMT+8, 2022-7-12 15:38 , Processed in 0.027328 second(s), 21 queries .