Oracle性能优化 之 库缓存 (二)

2014-11-24 12:04:34 · 作者: · 浏览: 2
ard) 61

parse count (failures) 0


Step5:在139人再次发出相似的查询语句:

SQL> select * from tab1 where id=3;

ID NAME

---------- ----------

3 CON$

3 I_IND1


Step6:再次查询139会话中的解析情况:

SQL> select name,value from v$sesstat a ,v$statname b where a.statistic#=b.statistic# and a.sid=139 and b.name like '%parse%';

NAME VALUE

---------------------------------------------------------------- ----------

parse count (total) 388

parse count (hard) 62

parse count (failures) 0


这个实验的结果我们已经看到了,这两条语句不同共享执行计划。试想如果每天有大量的用户登录,每个用户在登录时,都无法共享相似语句的执行计划,这将白白耗费多少CPU时间啊。这个时间就是绑定变量派上用场的时候了。下面我们先来看个使用绑定变量的例子:

Step1:在139会话中定义绑定变量User_id,并将它的值赋为4。

SQL> var user_id number;

SQL> exec :user_id:=4;

PL/SQL 过程已成功完成。


Step2:在139会话中使用绑定变量进行查询:

SQL> select * from tab1 where id=:user_id;

ID NAME

---------- ----------

4 UNDO$

4 I_CDEF2


Step3:观察139会话的解析次数:

SQL> select name,value from v$sesstat a ,v$statname b where a.statistic#=b.statistic# and a.sid=139 and b.name like '%parse%';

NAME VALUE

---------------------------------------------------------------- ----------

parse count (total) 395

parse count (hard) 69

parse count (failures) 0


Step4:将绑定变量User_id的值变为5,再次执行查询:

SQL> exec :user_id:=5;

PL/SQL 过程已成功完成。

注意,此语句也要解析,因此,我们在这里还要查看一下解析次数:


Step5:查看139会话的解析次数:

SQL> select name,value from v$sesstat a ,v$statname b where a.statistic#=b.statistic# and a.sid=139 and b.name like '%parse%';

NAME VALUE

---------------------------------------------------------------- ----------

parse count (total) 396

parse count (hard) 70

parse count (failures) 0


Step6:在139会话中,用绑定变量再次做一次查询:

SQL> select * from tab1 where id=:user_id;

ID NAME

---------- ----------

5 C_COBJ#

5 I_PROXY_RO

查询的结果,是ID为5的行。这里,我们使用了同样的语句分别查询出了ID为4的行和ID为5的行。


Step7:查看139会话的解析次数:

SQL> select name,value from v$sesstat a ,v$statname b where a.statistic#=b.statistic# and a.sid=139 and b.name like '%parse%';

NAME VALUE

---------------------------------------------------------------- ----------

parse count (total) 397

parse count (hard) 70

parse count (failures)