[20240410]为什么一条sql语句在实例2执行要慢的分析((补充).txt
--//昨天的测试,链接:https://blog.itpub.net/267265/viewspace-3011962/
--//被别人问一些问题,既然从共享池清除,sqlhh.sql脚本应该查询不到,为什么有显示呢?
--//sqlhh.sql脚本调用的是Tanel Poder的tpt/awr/awr_sqlstats_per_exec.sql脚本.查询的是dba_hist_sqlstat视图.
--//里面并不是汇总,而是查询的是子光标的执行计划,视图dba_hist_sqlstat里面存在字段LOADED_VERSIONS,VERSION_COUNT .
--//我的猜测将plan_hash_value相同的值汇集起来,VERSION_COUNT记录是plan_hash_value相同的数量,
--//出现这种情况最大的可能是子光标的堆6被清除了,而且由于这个执行计划非常复杂,堆6占用空间也很大.
1.环境:
SYS@127.0.0.1:9015/ywdb> @ver1
PORT_STRING VERSION BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx 11.2.0.4.0 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
2.分析:
SYS@127.0.0.1:9015/ywdb> @ sharepool/shp4 af4692qv1f56q 0
TEXT KGLHDADR KGLHDPAR C40 KGLHDLMD KGLHDPMD KGLHDIVC KGLOBHD0 KGLOBHD6 KGLOBHS0 KGLOBHS6 KGLOBT16 N0_6_16 N20 KGLNAHSH KGLOBT03 KGLOBT09
--------------------- ---------------- ---------------- ---------------------------------------- ---------- ---------- ---------- ---------------- ---------------- ---------- ---------- ---------- --------- ---------- ---------- ------------- ----------
child handle address 000000061217AEB8 00000005D3B15850 SELECT D.constraint_type as CONSTRAINT 0 0 0 00000005B4D48C50 00000005EC52B5D8 8600 705720 4617 718937 718937 3054965974 af4692qv1f56q 0
child handle address 0000000612665E30 00000005D3B15850 SELECT D.constraint_type as CONSTRAINT 0 0 0 0000000612665D78 00000005EC52B9E0 8600 705736 4617 718953 718953 3054965974 af4692qv1f56q 1
parent handle address 00000005D3B15850 00000005D3B15850 SELECT D.constraint_type as CONSTRAINT 0 0 0 00000005D0E6FFC8 00 5424 0 0 5424 5424 3054965974 af4692qv1f56q 65535
--//可以发现子光标的堆6占用空间很大,KGLOBHS6=7057XX,接近700K,在共享池内存不足的情况下,被踢出很正常.
--//而执行次数保持在父光标的堆0以及子光标的堆0中,这样能获得执行次数就很正常了.
--//参考链接:
--//https://blog.itpub.net/267265/viewspace-2936074/ => [20230220]探究v$session.SQL_EXEC_ID在共享池.txt
--//https://blog.itpub.net/267265/viewspace-2937262/ => [20230227]探究v$session.SQL_EXEC_ID在共享池(补充).txt
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/267265/viewspace-3013374/ ,如需转载,请注明出处,否则将追究法律责任。