《基于ORACLE SQL优化》读书笔记-CURSOR

Shared Cursor:

 Parent Cursor(V$SQLAREA):存SQL文本

 Child Cursor(V$SQL):解析树和执行计划。

硬解析:

 找不到Parent Cursor

 找到Parent Cursor,但找不到ChildCursor

 危害:

 Shared Pool Latch 争用(常为CPU占用率高) 为child cursor分配内存

 库缓存相关Latch(用于共享SGA内存结构的并发访问控制)和Mutex(11gR1后,用Mutex代替库缓存相关Latch)争用

 

扫描库缓存对象句柄链表要持有Library Cache Latch.

硬解析Latch持有过程:

持有Library Cache Latch,没找到Parent cursor,释放它。持有LibraryCache Latch,持有Shared Pool Latch, XXXX 释放SharedPool Latch, 释放Library Cache Latch.

 

软解也会析持有库缓存相关Latch,但持有时间相对短,而且不会在持有Shared Pool Latch情况下持有LibraryCache Latch

 

Session Cursor:

 与session一一对应

 有生命周期(open,parse,bind,execute,fetch,close)

 ORACLE执行SQL前先去PGA中找是否有缓存的sessioncursor

ORACLE依靠Session Cursor将目标SQL涉及的数据从BUFFERCACHE的对应数据块读到PGA里,然后在PGA里做后续处理(排序,表连接),最后把结果返回。

软软解析:跟软解析比,省了OPEN一个新的session cursor所需要花费的资源和时间,CLOSE现有的SESSIONCURSOR也不用做

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值