高级OWI与ORACLE性能调整读书笔记之SQL的过程执行

 

用户请求执行新的SQL时,Oracle则会利用相关的内存和锁存器执行必要的工作。将这些内容按照时间整理结果如下

1.         用户执行新的SQL时。Oracle在执行基本语法和权限检查等步骤后,获得Hash bucketlibrary cache锁存器,然后确认库高速缓冲区上是否存在相同的SQL,即相同的LCO。若在获得library cache锁存器的过程中发生争用,则等待latch:library cache事件。存在相同的LCO时直接跳至第8阶段执行,此过程称之为Soft Parsing。每当发生SQL Parsing请求时。Oracle都会增加parse count (total)统计值。

2.         若不存在相同SQL.在获得share pool锁存器后,从空闲列上查找最适合大小的空闲chunk。如果在获得shared pool锁存器的过程中发生争用,则等待latch:shared pool事件。Oracle会一直拥有shared pool锁存器,直到确保chunk为止。

3.         若不存在适合大小的空闲chunk,则查找更大空闲chunk后分割(split)使用。分割后剩下的内存区域重新登记到适当的空闲列。

4.         若检索了所有的空闲列都没有找到恰当的空闲chunk,则检索LRU列。LRU列上的chunk是重建的,而且是当前不使用的。

5.         若在LRU列上检索也不能确保适当大小的chunk,则最佳分配共享池内剩余的内存空间。

6.         以上过程如果均失败,则发生错误ORA-4031.

7.         若找到适当的chunk,对SQL相应的Handle(library cache handle)Exclusive模式获得library cache lock,并创建LCO信息。创建LCO后,library cache lock变换为null模式,将library cache pinExclusive模式获得后,创建执行计划(explain plan).2-7过程陈伟Hard Parsing。如若发生Hard ParsingOracle将增加parse count(hard)统计值。若在Hard Parsing过程中发现SQL语句错误(入参照不存在的对象等),则parse count(failure)统计值将会一起增加。

8.        OracleSQL Cursorshared模式获得library cache locklibrary cache pin,并执行SQL。这个阶段称为执行阶段。SQL Cursor所参考的LCO(表,Procedure),基本上与SQL Cursor相同的模式获得的library cache locklibrary cache pin。但是执行修改对象信息(DDL语句)工作时,对相应对象所对应的LCOExclusive模式获得Library cache locklibrary cache pin。例如‘alter table xxx add varchar2(10),这个SQL语句在执行阶段,对于SQL Cursor自身是以Shared模式获得Library cache lock,但是对于表xxx所对应的的LCO是以Exclusive模式获得library cache locklibrary cache pin过程中发生争用,则各自需要等待library cache locklibrary cache pin事件。

9.        Oracle对执行结束的SQL Cursor Fetch数据。这个过程就是Fetch阶段。在Fetch阶段,SQL Cursorlibrary cache lock变换为Null模式,并解除library cache pin

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值