Oracle SQL语句解析过程

Oracle SQL语句解析过程

目录

Oracle SQL语句解析过程

1 软硬解析

2 SQL解析过程


1 软硬解析

SQL语句在到达Oracle实例后,需要先进行解析,分析出最优的执行计划后,再按照执行计划,开始执行SQL。根据能否复用执行计划,解析过程可以分析以下两大类:

  • 硬解析过程:当一用户第一次提交一条SQL语句时,Oracle会将这SQL进行Hard parse,过程有点像程序编译,会检查SQL语法、表及其他对象的权限等信息。这过程会花比较长的时间,因为它要分析SQL语句的语法与语义。然后获得最优化后的执行计划(sql plan),并在内存中分配一定的空间保存该语句以及对应的执行计划等信息。
  • 软解析过程:当用户第二次请求或更多次请求时,Oracle会自动找到先前的语句与执行计划,不会进行Hard parse,而是直接进行Soft parse,即把语句对应的执行计划调出,然后执行,从而减少数据库的分析时间。

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

对于大量的、频繁访问的SQL语句,尽量采用Bind变量方式,走Soft parse,减少Hard parse,降低CPU和内存资源消耗。

2 SQL解析过程

ORACLE SQL语句的具体处理过程,大致如下:

  1. SQL语句经过HASH运算,得到一个HASH值;
  2. 在Shared Pool 的 Library Cache 中查找是否有相同的HASH值,如果存在,则无需硬解析,直接进行软解析;
  3. 如果Shared Pool不存在此HASH值,则进行语法检查,查看是否有语法错误 ;
  4. 如果没有语法错误,就进行语义检查,检查该SQL引用的对象是否存在,该用户是否具有访问该对象的权限;
  5. 如果没有语义错误,对该SQL进行解析,生成解析树和执行计划;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值