実行計画のキャッシュ有無

(8.0.22)
https://sikushima.hatenablog.com/entry/2019/04/10/181921

キャッシュされない模様。


SET optimizer_trace="enabled=on";
SET optimizer_trace_max_mem_size = 1048576;
select count(*) from tab1 a,tab1 b,tab1 c;
select * from information_schema.optimizer_trace\G
SET optimizer_trace="enabled=off";

select @@profiling;
set profiling = 1;
select count(*) from tab1 a,tab1 b,tab1 c;
select count(*) from tab1 a,tab1 b,tab1 c;
set profiling = 0;

show profiles;
show profile cpu for query 1;
show profile cpu for query 2;

 

(19c)
https://www.intellilink.co.jp/column/oracleletter/2017/020300.aspx

グローバルにキャッシュされる。


SQL単位での実行計画キャッシュのクリア

select /* TEST12345 */ * from tab1;

select address, hash_value, sql_text, sql_id, plan_hash_value
from v$sql
where sql_text like '%TEST12345%'
;

sysユーザで接続
-- exec dbms_shared_pool.purge ('<ADDRESS>,<HASH_VALUE>','C');
exec dbms_shared_pool.purge ('0000000066556F18,2799543990','C');

 

(13)
https://sikushima.hatenablog.com/entry/2019/04/10/181921

キャッシュされない模様。(ただし、プリペアド文はセッション内でキャッシュされる場合がある。参考パラメータ:plan_cache_mode)

 

 

(2019)

グローバルにキャッシュされる。

SQL単位での実行計画キャッシュのクリア

select /* TEST12345 */ * from tab1;

select cp.plan_handle, st.text
from sys.dm_exec_cached_plans cp
cross apply sys.dm_exec_sql_text(plan_handle) st
where st.text like '%TEST12345%'
;

dbcc freeproccache(0x06000800BD94DF23B071C06E9D01000001000000000000000000000000000000000000000000000000000000);