oracle 11.2 result_cache说明
1 相关参数 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_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 = 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 删除所有现有结果并清空高速缓存: begin DBMS_RESULT_CACHE.INVALIDATE('SH','SALES'); end; select cache_id,lru_number,db_link,status,bucket_no,hash,name,namespace,type,status from GV$RESULT_CACHE_OBJECTS where name like '%sales%'; CACHE_ID LRU_NUMBER DB_LINK STATUS BUCKET_NO HASH NAME NAMESPACE TYPE STATUS 3gqafv8xzpk9t535y6dgfmyhjt 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 执行计划查看 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: 5 注意事项1 绑定变量不同,不可以命中2 最适用于需要访问大量行却仅返回其中一少部分的语句,建议使用在OLAP系统/报表系统中使用 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |