SQL处理的主要步骤

    SQL语句在处理中要经过几个步骤,分别是分析、绑定和执行。Oracle使用游标(专用SQL区)来存储分析过的语句以及与当前处理的语句有关的其他信息。
Oracle自动为所有SQL语句打开一个游标。

    分析
    在分析步骤中,Oracle要做以下几件事情来检查SQL语句:
1.Oracle检查语句在语法上是否正确。服务器查看数据字典,看表和列的说明是否正确;
2.Oracle确认你是否有权限执行试图通过SQL语句执行的活动
3.Oracle制定语句的执行计划,它包括选择访问语句中对象的最好方法。
    在检查了权限后,为了标示语句,Oracle分配给SQL语句一个数----SQL散列值。如果SQL散列值(HASH)已存在内存中,Oracle将查找语句现存的执行计划,此执行计划详细描述访问各种数据库对象的最佳方法。
如果执行计划存在,Oracle将直接跳到使用该执行计划的实际执行语句。这称为软解析,是语句处理的首选技术。因为使用已有的执行计划,所以软解析很快且很有效。
    相对于软解析的是硬解析。如果在内存中找不到语句的SQL散列值,则Oracle必须进行硬解析,硬解析很耗费系统内存和其他资源。Oracle必须建立一个新的执行计划,这意味着它必须估计大量可能性,并从中选出
最好的计划。在这种处理中,为检查数据字典,Oracle需要多次访问库高速缓存和字典高速缓存,而且每次访问这些共同使用的区,Oracle都需要使用闩(低级别的串行控制机制)保护SGA中的共享数据结构。因此
硬解析会增加闩的争用。
    任何时候,只要语句处理中存在严重的资源争用,执行时间就会增加。请注意,硬解析太多将会导致共享池破碎,使争用恶化。
    在解析操作完成后,Oracle为语句分配一个共享SQL区,只要此解析过的语句在该内存中,任何用户都可以访问它。

    绑定
    在绑定步骤中,Oracle检索分析步骤所使用的变量值。请注意,仅在分析步骤完成后,变量才扩展为文字值。

    执行
    Oracle完成分析和绑定之后,就开始执行语句。注意, Oracle将首先检查语句的分析表示在内存中是否存在。如果存在,则用户可以直接执行此分析过的语句,用不着再经过分析处理。
    数据库从磁盘读数据到内存缓冲区(如果在内存之中未发现数据)是在执行阶段进行的。数据库还自动进行必需的锁定,保证记录在SQL语句执行中所作的更改,在SQL执行后,Oracle将自动关闭游标。



来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/27500440/viewspace-1827277/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/27500440/viewspace-1827277/

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值