[20230705]提示result_cache与调用执行次数.txt --//简单探究提示result_cache与调用执行次数. 1.环境: SCOTT@test01p> @ver1 PORT_STRING VERSION BANNER CON_ID ------------------------------ -------------- -------------------------------------------------------------------------------- ---------- IBMPC/WIN_NT64-9.1.0 12.2.0.1.0 Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production 0 --//以sys用户执行: grant EXECUTE ON dbms_lock to scott; grant dba to scott; CREATE OR REPLACE FUNCTION SCOTT.sleep (seconds IN NUMBER) RETURN NUMBER AS BEGIN sys.DBMS_LOCK.sleep (seconds); RETURN seconds; END; / --//exec dbms_result_cache.flush; 2.测试1: SCOTT@test01p> set timing on SCOTT@test01p> select /*+ result_cache */ sleep(1) from dual; SLEEP(1) ---------- 1 Elapsed: 00:00:02.12 --//从执行需要时间2.12秒看,至少调用sleep函数2次. SCOTT@test01p> @ hash HASH_VALUE SQL_ID CHILD_NUMBER KGL_BUCKET PLAN_HASH_VALUE HASH_HEX SQL_EXEC_START SQL_EXEC_ID ---------- ------------- ------------ ---------- --------------- ---------- ------------------- ----------- 1138656018 5rnkp151xx0sk 0 33554 1388734953 43de8312 2023-07-05 21:36:37 16777216 SCOTT@test01p> @ tpt/sqlid 5rnkp151xx0sk % Show SQL text, child cursors and execution stats for SQLID 5rnkp151xx0sk child % HASH_VALUE PLAN_HASH_VALUE CH# SQL_TEXT ---------- --------------- ----- ------------------------------------------------------------------------------------------------------------------------------------------------------ 1138656018 1388734953 0 select /*+ result_cache */ sleep(1) from dual Elapsed: 00:00:00.04 CH# PLAN_HASH PARSES H_PARSES EXECUTIONS FETCHES ROWS_PROCESSED ROWS_PER_FETCH CPU_SEC_EXEC ELA_SEC_EXEC LIOS_PER_EXEC PIOS_PER_EXEC TOTAL_CPU_SEC TOTAL_ELA_SEC TOTAL_IOWAIT_SEC TOTAL_LIOS TOTAL_PIOS SORTS USERS_EXECUTING LAST_ACTIVE_TIME PARENT_HANDLE OBJECT_HANDLE ----- ---------- ---------- ---------- ---------- ---------- -------------- -------------- ------------ ------------ ------------- ------------- ------------- ------------- ---------------- ---------- ---------- ---------- --------------- ------------------- ---------------- ---------------- 0 1388734953 1 1 1 1 1 1 .047 .126 853 9 .047 .126 .070646 853 9 0 0 2023-07-05 21:36:39 000007FF1589B1A8 000007FF1589AC48 Elapsed: 00:00:00.02 --//从执行次数看语句仅仅执行1次,很明显在加入result_cache时,如果result cache没有命中的情况下,调用sleep函数2次. --//再次执行: SCOTT@test01p> select /*+ result_cache */ sleep(1) from dual; SLEEP(1) ---------- 1 Elapsed: 00:00:00.02 --//如果result cache没有命中的情况下,调用sleep函数0次. SCOTT@test01p> select * from v$result_cache_objects where lower(name) like '%sleep%' 2 @pr ============================== ID : 252 TYPE : Dependency STATUS : Published BUCKET_NO : 4006 HASH : 1279713190 NAME : SCOTT.SLEEP NAMESPACE : CREATION_TIMESTAMP : 2023-07-05 21:36:38 CREATOR_UID : 81 DEPEND_COUNT : 1 BLOCK_COUNT : 1 SCN : 15465384 COLUMN_COUNT : 0 PIN_COUNT : 0 SCAN_COUNT : 0 ROW_COUNT : 0 ROW_SIZE_MAX : 0 ROW_SIZE_MIN : 0 ROW_SIZE_AVG : 0 BUILD_TIME : 0 LRU_NUMBER : 0 OBJECT_NO : 22915 INVALIDATIONS : 0 SPACE_OVERHEAD : 0 SPACE_UNUSED : 0 CACHE_ID : SCOTT.SLEEP CACHE_KEY : SCOTT.SLEEP CHECKSUM : 0 EDITION_ID : 0 DB_LINK : No CON_ID : 3 ============================== ID : 225 TYPE : Result STATUS : Published BUCKET_NO : 549 HASH : 1367958053 NAME : select /*+ result_cache */ sleep(1) from dual NAMESPACE : SQL CREATION_TIMESTAMP : 2023-07-05 21:36:38 CREATOR_UID : 81 DEPEND_COUNT : 1 BLOCK_COUNT : 1 SCN : 15465384 COLUMN_COUNT : 1 PIN_COUNT : 0 SCAN_COUNT : 1 ROW_COUNT : 1 ROW_SIZE_MAX : 5 ROW_SIZE_MIN : 5 ROW_SIZE_AVG : 5 BUILD_TIME : 100 LRU_NUMBER : 93 OBJECT_NO : 0 INVALIDATIONS : 0 SPACE_OVERHEAD : 325 SPACE_UNUSED : 375 CACHE_ID : bvvy8dkvmhfgh2qr0t4vm48uzw CACHE_KEY : g1w90h24jk80m8vu74drbxqadr CHECKSUM : 2611632069 EDITION_ID : 133 DB_LINK : No CON_ID : 3 PL/SQL procedure successfully completed. 3.测试2: --//加入DETERMINISTIC呢? CREATE OR REPLACE FUNCTION SCOTT.sleep1 (seconds IN NUMBER) RETURN NUMBER DETERMINISTIC AS BEGIN sys.DBMS_LOCK.sleep (seconds); RETURN seconds; END; / SCOTT@test01p> select /*+ result_cache */ sleep1(1) from dual; SLEEP1(1) ---------- 1 Elapsed: 00:00:01.02 --//很明显这样sleep1在result cache没有命中的情况下,调用1次。这个有点像以前的标量子查询. SCOTT@test01p> select /*+ result_cache */ sleep1(1) from dual; SLEEP1(1) ---------- 1 Elapsed: 00:00:00.00 4.测试3: --//加入RESULT_CACHE呢? CREATE OR REPLACE FUNCTION SCOTT.sleep2 (seconds IN NUMBER) RETURN NUMBER RESULT_CACHE AS BEGIN sys.DBMS_LOCK.sleep (seconds); RETURN seconds; END; / SCOTT@test01p> select /*+ result_cache */ sleep2(1) from dual; SLEEP2(1) ---------- 1 Elapsed: 00:00:01.01 SCOTT@test01p> select /*+ result_cache */ sleep2(1) from dual; SLEEP2(1) ---------- 1 Elapsed: 00:00:00.00
[20230705]提示result_cache与调用执行次数.txt
来源:这里教程网
时间:2026-03-03 18:51:20
作者:
编辑推荐:
- XTTS数据迁移 rman_xtt_v(二)03-03
- [20230705]提示result_cache与调用执行次数.txt03-03
- 淘宝天猫商家采集教程(天猫淘宝商家信息收集过程)03-03
- 把海量监控视频数据进行压缩存储有什么好处?03-03
- Udev绑定(DM multipath)多路径设备03-03
- 视频压缩存储解决方案03-03
- NULL是不是空?03-03
- [20230531]insert blob数据类型.txt03-03
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- 淘宝天猫商家采集教程(天猫淘宝商家信息收集过程)
淘宝天猫商家采集教程(天猫淘宝商家信息收集过程)
26-03-03 - 把海量监控视频数据进行压缩存储有什么好处?
把海量监控视频数据进行压缩存储有什么好处?
26-03-03 - 视频压缩存储解决方案
视频压缩存储解决方案
26-03-03 - NULL是不是空?
NULL是不是空?
26-03-03 - 查看视图定义卡死情况排查
查看视图定义卡死情况排查
26-03-03 - MX Linux 23 Beta 正式发布,基于 Debian 12 “Bookworm”
- 地铁监控视频存储解决方案
地铁监控视频存储解决方案
26-03-03 - 从 Oracle 迁移到 TiDB 的方案设计与用户实践
从 Oracle 迁移到 TiDB 的方案设计与用户实践
26-03-03 - 如何对接1688API接口php java对接源代码
如何对接1688API接口php java对接源代码
26-03-03 - 淡季不淡,满帮一季度净利创历史新高的背后原因是什么?
淡季不淡,满帮一季度净利创历史新高的背后原因是什么?
26-03-03
