kxbin
成功留给有准备的人
posts - 10,  comments - 35,  trackbacks - 0

oracle SQL语句执行步骤

Oracle中SQL语句执行过程中,Oracle内部解析原理如下:

  1、当一用户第一次提交一个SQL表达式时,Oracle会将这SQL进行Hard parse,这过程有点像程序编译,检查语法、表名、字段名等相关信息(如下图),这过程会花比较长的时间,因为它要分析语句的语法与语义。然后获得最优化后的执行计划(sql plan),并在内存中分配一定的空间保存该语句与对应的执行计划等信息。

  2、当用户第二次请求或多次请求时,Oracle会自动找到先前的语句与执行计划,而不会进行Hard parse,而是直接进行Soft parse(把语句对应的执行计划调出,然后执行),从而减少数据库的分析时间。

  注意的是:Oracle中只能完全相同的语句,包大小写、空格、换行都要求一样时,才会重复使用以前的分析结果与执行计划。

  分析过程如下图:


  对于大量的、频繁访问的SQL语句,如果不采用Bind 变量的方式,哪Oracle会花费大量的Shared latch与CPU在做Hard parse处理,所以,要尽量提高语句的重用率,减少语句的分析时间,通过了解Oracle SQL语句的分析过程可以明白Oracle的内部处理逻辑,并在设计与实现上避免。

  在用JDBC或其它持久化数据(如Hibernate,JDO等)操作时,尽量用占位符(?)

  

ORACLE sql 的处理过程大致如下:
 1.
运用HASH算法,得到一个HASH值,这个值可以通过V$SQLAREA.HASH_VALUE 查看
 2.
shared pool 中的 library cache 中查找是否有相同的HASH值,如果存在,则无需硬解析,进行软解析
 3.
如果shared pool不存在此HASH值,则进行语法检查,查看是否有语法错误
 4.
如果没有语法错误,就进行语义检查,检查该SQL引用的对象是否存在,该用户是否具有访问该对象的权限
 5.
如果没有语义错误,对该SQL进行解析,生成解析树,执行计划
 6.
生成ORACLE能运行的二进制代码,运行该代码并且返回结果给用户
硬解析和软解析都在第5步进行
硬解析通常是昂贵的操作,大约占整个SQL执行的70%左右的时间,硬解析会生成执行树,执行计划,等等。
当再次执行同一条SQL语句的时候,由于发现library cache中有相同的HASH值,这个时候不会硬解析,而会软解析,
那么软解析究竟是干了什么呢?其实软解析就是跳过了生成解析树,生成执行计划这个耗时又耗CPU的操作,直接利用生成的执行计划运行
SQL语句。
下面摘抄eygle深入解析ORACLE 中关于SQL执行过程的描述
  1.
首先获得library cache latch,根据SQLHASH_VALUElibrary cache中查找是否存在此HASH_VALUE,如果找到这个HASH_VALUE,称之为软解析,Server获得改SQL执行计划转向第4步,如果找不到共享代码就进行硬解析。
  2.
释放library pool cache,获得shared pool latch,查找并锁定自由空间(bucket 中查找chunk)。如果找不到,报ORA-04031错误
  3.
释放shared pool latch,重新获得library cache latch,SQL执行计划放入library cache中。
  4.
释放library cache latch,保持null模式的library cache pin/lock.
  5.
开始执行。
Library cache latch
可以理解为硬/软解析的时候发生的,因为解析的时候会搜索library cache,所以会产生library cache latch
Library cache pin
是在执行的阶段发生的。

posted on 2012-09-28 11:28 kxbin 阅读(1773) 评论(0)  编辑  收藏 所属分类: ORACLE

只有注册用户登录后才能发表评论。


网站导航:
 
你恨一个人是因为你爱他;你喜欢一个人,是因为他身上有你没有的;你讨厌一个人是因为他身上有你有的东西;你经常在别人面前批评某人,其实潜意识中是想接近他。

<2024年3月>
252627282912
3456789
10111213141516
17181920212223
24252627282930
31123456

常用链接

留言簿(5)

随笔档案

文章分类

文章档案

相册

收藏夹

J2EE

java技术网站

Linux

平时常去的网站

数据库

电影网站

网站设计

搜索

  •  

最新评论

阅读排行榜

评论排行榜