千家信息网

oracle 11.2 result_cache说明

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,1 相关参数RESULT_CACHE_MAX_RESULT:指定任一结果可使用的最大高速缓存量,默认值为5%,但可指定1 到100 之间的任一百分比值,可在系统和会话级别上实施此参数;result_c
千家信息网最后更新 2025年02月01日oracle 11.2 result_cache说明

1 相关参数
RESULT_CACHE_MAX_RESULT:指定任一结果可使用的最大高速缓存量,默认值为5%,但可指定1 到100 之间的任一百分比值,可在系统和会话级别上实施此参数;
result_cache_max_size :32k的整数倍,如果将结果高速缓存的值设为0,则会禁用此结果高速缓存,不能超过共享池的75%;
RESULT_CACHE_REMOTE_EXPIRATION:可以指定依赖于远程数据库对象的结果保持有效的时间(以分钟为单位),默认值为0,表示不会使用高速缓存使用远程对象的结果;
result_cache_mode :默认为 MANUAL,即加hint /+ result_cache / 才使用result cache
启用result cache:

alter system set result_cache_max_result=5;alter system set result_cache_max_size=20m;

2 相关存储过程
查询内存分配情况:

SQL>set serveroutput on ;SQL> exec dbms_result_cache.memory_reportR 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 bytesMaximum Cache Size  = 1280K bytes (1280 blocks)Maximum Result Size = 64K bytes (64 blocks)[Memory]Total Memory = 202160 bytes [0.110% of the Shared Pool]... Fixed Memory = 5352 bytes [0.003% of the Shared Pool]... Dynamic Memory = 196808 bytes [0.107% of the Shared Pool]....... Overhead = 131272 bytes....... Cache Memory = 64K bytes (64 blocks)........... Unused Memory = 29 blocks........... Used Memory = 35 blocks............... Dependencies = 10 blocks (10 count)............... Results = 25 blocks................... SQL     = 20 blocks (20 count)................... Invalid = 5 blocks (5 count)SQL> select dbms_result_cache.status from dual; ENABLED

删除所有现有结果并清空高速缓存:
EXECUTE DBMS_RESULT_CACHE.FLUSH;
检查:
select * from GV$RESULT_CACHE_OBJECTS
使特定结果失效:

beginDBMS_RESULT_CACHE.INVALIDATE('SH','SALES');end;
select cache_id,lru_number,db_link,status,bucket_no,hash,name,namespace,type,statusfrom GV$RESULT_CACHE_OBJECTS where name like '%sales%';
CACHE_ID    LRU_NUMBER  DB_LINK STATUS  BUCKET_NO   HASH    NAME    NAMESPACE   TYPE    STATUS3gqafv8xzpk9t535y6dgfmyhjt  0   No  Invalid 2055    571566087   "select /*+ result_cache */ prod_id,sum(amount_sold) from sh.sales group by prod_id order by prod_id"   SQL Result**    Invalid**

3 执行计划查看
SQL> select /*+ result_cache */ prod_id,sum(amount_sold) from sales group by prod_id order by prod_id;
Execution Plan

Plan hash value: 4109827725--------------------------------------------------------------------------------------------------------------------| Id  | Operation             | Name                       | Rows  | Bytes | Cost (%CPU)| Time     | Pstart| Pstop |
|   0 | SELECT STATEMENT      |                            |    72 |   648 |   680  (24)| 00:00:09 |       |       ||   1 |  RESULT CACHE         | g23n3fafz6vxs65351bmca3jq8 |       |       |            |          |       |       ||   2 |   SORT GROUP BY       |                            |    72 |   648 |   680  (24)| 00:00:09 |       |       ||   3 |    PARTITION RANGE ALL|                            |   918K|  8075K|   557   (8)| 00:00:07 |     1 |    28 ||   4 |     TABLE ACCESS FULL | SALES                      |   918K|  8075K|   557   (8)| 00:00:07 |     1 |    28 |
Result Cache Information (identified by operation id):
   1 - column-count=2; dependencies=(SH.SALES); name="select /*+ result_cache */ prod_id,sum(amount_sold) from sales group by prod_id order by prod_id"

可以看出为result cache;不使用result cache:

select prod_id,sum(amount_sold) from sales group by prod_id order by prod_id; Execution Plan----------------------------------------------------------Plan hash value: 4109827725----------------------------------------------------------------------------------------------| Id  | Operation            | Name  | Rows  | Bytes | Cost (%CPU)| Time     | Pstart| Pstop |----------------------------------------------------------------------------------------------|   0 | SELECT STATEMENT     |       |    72 |   648 |   680  (24)| 00:00:09 |       |       ||   1 |  SORT GROUP BY       |       |    72 |   648 |   680  (24)| 00:00:09 |       |       ||   2 |   PARTITION RANGE ALL|       |   918K|  8075K|   557   (8)| 00:00:07 |     1 |    28 ||   3 |    TABLE ACCESS FULL | SALES |   918K|  8075K|   557   (8)| 00:00:07 |     1 |    28 |

也可以强制对象使用result cache:
alter table sales result_cache(mode force);
取消:
alter table sales result_cache(mode default);
4 相关视图
(G)V$RESULT_CACHE_STATISTICS : 列出各种高速缓存设置和内存使用量统计信息
select from V$RESULT_CACHE_STATISTICS
(G)V$RESULT_CACHE_MEMORY : 列出所有内存块和相应的统计信息
select
from V$RESULT_CACHE_MEMORY
(G)V$RESULT_CACHE_OBJECTS: 列出所有对象(高速缓存结果和依赖性)及其属性
select cache_id,lru_number,db_link,status,bucket_no,hash,name,namespace,type,status
from GV$RESULT_CACHE_OBJECTS where name like '%sales%';
(G)V$RESULT_CACHE_DEPENDENCY: 列出高速缓存结果之间的依赖性详细信息及依赖性
select b.owner,b.object_name,a.* from V$RESULT_CACHE_DEPENDENCY a,all_objects b where a.object_no=b.object_id;

5 注意事项
1 绑定变量不同,不可以命中
2 最适用于需要访问大量行却仅返回其中一少部分的语句,建议使用在OLAP系统/报表系统中使用

结果 高速 缓存 对象 依赖性 信息 内存 系统 之间 参数 任一 统计 不同 最大 有效 事项 使用量 单位 变量 可在 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 推荐我的世界照顾新手的服务器 数据库的php代码 南宁网络安全大赛决赛 松江天气预报软件开发 档案长期保存数据库和利用数据库 软件开发合同注意问题 网络安全视频教程免费下载 微信记录保存在服务器多久 dnf 服务器正在检查 河南税控盘服务器上传地址 中东可以玩lol哪个服务器 中国网络安全发展前景 app软件开发学习网 利用网络技术帮助别人犯罪 客户端有数据库才能连接数据库吗 深信服服务器资源 orale获取数据库名称 湖南正规软件开发服务价钱 手机和网络安全专项排查情况 下例属于新型网络技术的是 5g网络技术微型课论文 自己家电脑做服务器怎么备案 中级数据库软考多少选择题 系统点表如何上传数据库 深蓝星空互联网科技 数据库系统的核心是 北京康健西文数据库 安宁软件开发报价表 服务器怎么建共享盘 点正互联网科技有限公司
0