《基于ORACLE SQL优化》读书笔记-CURSOR
2014-02-14 11:05
337 查看
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也不用做
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也不用做
相关文章推荐
- 《基于ORACLE SQL优化》读书笔记-特殊执行计划
- 《基于ORACLE SQL优化》读书笔记-查看执行计划
- 《基于ORACLE SQL优化》读书笔记-位图索引执行计划
- 《基于ORACLE SQL优化》读书笔记-使用SQL PROFILE锁定执行计划
- 《基于ORACLE SQL优化》读书笔记-表的连接类型
- 《基于ORACLE SQL优化》读书笔记-使用SPM稳定执行计划
- 《基于ORACLE SQL优化》读书笔记-表的连接方式
- 11.读书笔记收获不止Oracle之 表设计之分区使用
- oracle sql优化
- 21.读书笔记收获不止Oracle之 索引回表效率
- 35.读书笔记收获不止Oracle之嵌套循环表连接与索引
- Oracle 基于Windows访问带端口的远程服务器
- Oracle技术之基于时间点的表空间恢复
- 基于LINUX的Oracle 10G RAC管理维护学习手记
- Oracle Cursor详解与实例
- oracle 游标变量ref cursor详解
- Oracle中用For Loop 替代Cursor
- 基于oracle的sql(结构化查询语言)指令
- 2011年12月11日星期日(oracle读书笔记)
- Oracle SOA Suite环境搭建详解(基于版本11.1.1.6.0)