开发成功的Oracle应用_Oracle 硬解析与软解析1
Oracle硬解析与软解析
一、SQL语句的执行过程
当发布一条SQL或PL/SQL命令时,Oracle会自动寻找该命令是否存在于共享池中来决定对当前的语句使用硬解析或软解析。
通常情况下,SQL语句的执行过程如下:
a.SQL代码的语法(语法的正确性)及语义检查(对象的存在性与权限)
b.将SQL代码的文本进行哈希得到哈希值
c.如果共享池中存在相同的哈希值,则对这个命令进一步判断是否进行软解析,否则到e步骤
d.对于存在相同哈希值的新命令行,其文本将与已存在的命令行的文本逐个进行比较。这些比较包括大小写,字符串是否一致,空格,注释等,如果一致,则对其进行软解析,转到步骤f,否则到e步骤。
e.硬解析,生成执行计划
f.执行SQL代码,返回结果
二、不能使用软解析的情形
1、查询的表对象使用了大小写,Oracle为其生成了不同的执行计划
2、where子句的empno的值不同,Oracle同样为其他生成了不同的执行计划
3、在判断是否使用硬解析时,所参照的对象及schema应该是相同的,如果对象相同,而schema不同,则需要使用硬解析,生成不同的执行计划
三、硬解析的弊端
硬解析即整个SQL语句的执行需要完完全全的解析,生成执行计划。而硬解析,生成执行计划需要耗用CPU资源,以及SGA资源。
四、硬解析的测试
sys@ORCL>select name,class,value from v$sysstat where name like 'parse count%';
NAME
----------------------------------------------------------------------------------------------------
CLASS VALUE
---------- ----------
parse count (total)
64 602283
parse count (hard)
64 33060
parse count (failures)
64 1514
parse count (describe)
64 111
sys@ORCL>/
NAME
----------------------------------------------------------------------------------------------------
CLASS VALUE
---------- ----------
parse count (total)
64 602309
parse count (hard)
64 33061
parse count (failures)
64 1514
parse count (describe)
64 111
sys@ORCL>/
NAME
----------------------------------------------------------------------------------------------------
CLASS VALUE
---------- ----------
parse count (total)
64 602338
parse count (hard)
64 33062
parse count (failures)
64 1514
parse count (describe)
64 111
sys@ORCL>/
NAME
----------------------------------------------------------------------------------------------------
CLASS VALUE
---------- ----------
parse count (total)
64 602695
parse count (hard)
64 33063
parse count (failures)
64 1514
parse count (describe)
64 111
sys@ORCL>/
NAME
----------------------------------------------------------------------------------------------------
CLASS VALUE
---------- ----------
parse count (total)
64 602769
parse count (hard)
64 33064
parse count (failures)
64 1514
parse count (describe)
64 111
sys@ORCL>/
NAME
----------------------------------------------------------------------------------------------------
CLASS VALUE
---------- ----------
parse count (total)
64 603112
parse count (hard)
64 33065
parse count (failures)
64 1514
parse count (describe)
64 111
sys@ORCL>/
NAME
----------------------------------------------------------------------------------------------------
CLASS VALUE
---------- ----------
parse count (total)
64 603136
parse count (hard)
64 33065
parse count (failures)
64 1514
parse count (describe)
64 111
sys@ORCL>/
NAME
----------------------------------------------------------------------------------------------------
CLASS VALUE
---------- ----------
parse count (total)
64 603171
parse count (hard)
64 33066
parse count (failures)
64 1514
parse count (describe)
64 111
sys@ORCL>/
NAME
----------------------------------------------------------------------------------------------------
CLASS VALUE
---------- ----------
parse count (total)
64 603251
parse count (hard)
64 33067
parse count (failures)
64 1514
parse count (describe)
64 111
sys@ORCL>/
NAME
----------------------------------------------------------------------------------------------------
CLASS VALUE
---------- ----------
parse count (total)
64 603251
parse count (hard)
64 33067
parse count (failures)
64 1514
parse count (describe)
64 111
本文来源 我爱IT技术网 http://www.52ij.com/jishu/5133.html 转载请保留链接。
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
