提到shared pool,不得不提绑定变量,在LOTP线业务系统中是很关键的一个性能基准。
可以举一个例子来简单说明一下。
1、创建一个表test_var,然后传入两个变量值,类型不同,查看执行的情况。
SH@prod>create table test_var as select object_id id,object_name name from user_objects where rownum<3;
Table created.
Elapsed: 00:00:00.78
SH@prod>update test_var set name=‘aaa’ where rownum<2;
1 row updated.
Elapsed: 00:00:00.12
SH@prod>update test_var set name=‘bbb’ where name!=‘aaa’;
1 row updated.
Elapsed: 00:00:00.15
SH@prod>alter system flush shared_pool;
System altered.
SH@prod>variable name varchar2(100);
SH@prod>exec :name:=‘aaa’;
PL/SQL procedure successfully completed.
SH@prod>select * from test_var where name=:name;
ID NAME
13962 aaa
运行语句之后,查看sql_id和hash值,从v s q l a r e a 中 可 以 查 看 v e r s i o n c o u n t , 如 果 发 生 了 硬 解 析 , v e r s i o n c o u n t 就 会 递 增 。 S H @ p r o