本文共 1212 字,大约阅读时间需要 4 分钟。
对于shared pool的学习,发现越尝试去了解,发现自己对它越不了解。里面的东西很杂。shared pool的大小设置shared pool的sub pool
1* select a.ksppinm,b.ksppstvl from x$ksppi a,x$ksppsv b where a.indx=b.indx and a.ksppinm='_kghdsidx_count'
KSPPINM KSPPSTVL
关于绑定变量和硬解析
SQL> alter system flush shared_pool;
System altered.
SQL> variable name varchar2(100);
PL/SQL procedure successfully completed.
SQL> select *from test_var where name=:name;
ID NAME
SQL_ID HASH_VALUE ADDRESS CHILD_ADDRESS
SQL> col sql_text format a50
SQL_TEXT VERSION_COUNT
然后再来赋另外一个值,看看version_count会不会递增。
SQL> exec :name:='bbb';
PL/SQL procedure successfully completed.
SQL> select *from test_var where name=:name;
ID NAME
SQL> col sql_text format a50
SQL_ID HASH_VALUE ADDRESS CHILD_ADDRESS
SQL>
SQL_TEXT VERSION_COUNT 1
可以看到,没有任何的变化,说明绑定变量起作用了,没用再次硬解析。
SQL> variable name char(3);
PL/SQL procedure successfully completed.
SQL> select *from test_var where name=:name;
ID NAME
SQL> select sql_text,version_count from v$sqlarea where sql_id='3vm96qwzm0mg2'
SQL_TEXT VERSION_COUNT 2
SQL> select sql_id,hash_value,address,child_address from v$sql where sql_text like 'select *from test_var%';
SQL_ID HASH_VALUE ADDRESS CHILD_ADDRESS0000000069764850000000006A039F40
不同之处就是child_address,说明走了两次硬解析。
转载地址:http://jxpsf.baihongyu.com/