oracle的sql硬解析和软解析,[ORACLE]oracle SQL执行过程 软解析(soft prase)硬解析(hard prase)以及 Soft Soft Parse...
每个sql会产生两个share cursor 父游标(parent cursor)和子游标(child cursor) ,缓存在库缓存区的对象都是以一种叫库缓存对象句柄(library cache object handle)的结构存存储在库缓存中,oracle就是通过访问相关的库缓存对象句柄来访问对应的库缓存对象的,上面的每一个红圈里的方块就是一个库缓存对象句柄
名词
解释:
hash buckets : 整个库缓存可以看作是由一组hash bucket 所组成,每一个hash bucket对应一个不同的hash值。对于单个的hash bucket ,他里面存储的就是哈希值相同的所有库缓存对象句柄。
parent cursor : 存储的是sql的文本,
child cursor : 存储的是 可以被重用的解析树和执行计划。
软解析: 根据这条sql文本计算出相应的hash 值,并且根据hash值去找对应的hash bucket , 然后在匹配到的hash bucket 中去查找匹配的parent cursor ,然后再遍历属于这个parent cursor的所有child cursor ,找到匹配的child cursor ,如果能顺利的找到,这就可以直接调用解析树和执行计划
硬解析: 如果没有找到匹配的父游标,或者找到了父游标,没有找到对应的子游标,那么oracle就会重新开始解析该目标sql, 并且就会在后面重新生成一个新的父游标和子游标或者是只生成子游标(找到了父游标)
同一个sql对应的hash值是一样的,并且同一个sql也可能对应多个不同的解析树和执行计划。正是因为这样可以减少hash bucket 中的库缓存对象句柄链表的长度,并且不同的sql对应的hash 值也可能相同,这样就可以公用一个hash bucket ,减少了hash bucket的数量,正式由于这个原因才设计成了父游标和子游标并存的结构
session cursor:用于在当前session中的解析和执行sql,与session是一一对应的,不同的session是不能共享的,有生命周期,使用过程中肯定至少经历 open ,parse ,bind,execute,fetch 的一个或多个阶段。并且用过的session cursor 不一定缓存在对应的session pga中,oracle 依据session cursor 来将目标sql所涉及到的数据从buffer cache 中读到PGA,然后再排序,表连接等。
Soft Soft Parse: oracle 在解析和执行目标sql时,会首先在当前session中的PGA中查看是否缓存有匹配的session cursor ,如果有直接用,这样就是软软解析,和软解析相比,省掉了open一个新的session cursor所需的时间和资源,同时也省掉了close一个现有的session cursor所需的时间和资源.
soft soft parse 的前提:session_cached_cursors >0
Bind Var:能提高性能主要是因为这样做可以尽量避免不必要的硬分析(Hard Parse)而节约了时间,同时节约了大量的CPU资源.
[ORACLE]oracle SQL执行过程 软解析(soft prase)硬解析(hard prase)以及 Soft Soft Parse
标签:不同 alt mil ace open 技术 lin 查找 oracl
本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉 本文系统来源:https://www.cnblogs.com/tingxin/p/12780409.html
oracle的sql硬解析和软解析,[ORACLE]oracle SQL执行过程 软解析(soft prase)硬解析(hard prase)以及 Soft Soft Parse...相关推荐
- Vue源码解析系列——数据驱动篇:patch的执行过程
准备 vue版本号2.6.12,为方便分析,选择了runtime+compiler版本. 回顾 如果有感兴趣的同学可以看看我之前的源码分析文章,这里呈上链接:<Vue源码分析系列:目录> ...
- C#调用SQL中的存储过程中有output参数,存储过程执行过程中返回信息
C#调用SQL中的存储过程中有output参数,类型是字符型的时候一定要指定参数的长度.不然获取到的结果总是只有第一字符.本人就是由于这个原因,折腾了很久.在此记录一下,供大家以后参考! 例如: CR ...
- sql 解析字符串添加到临时表中 sql存储过程in 参数输入
sql 解析字符串添加到临时表中 sql存储过程in 参数输入 解决方法 把字符串解析 添加到 临时表中 SELECT * into #临时表 FROM dbo.Func_SplitOneCol ...
- 2018年下半年系统集成项目管理工程师金色考点暨历年真题解析(09年到18年上半年)---软考中级最新
2018年下半年系统集成项目管理工程师金色考点暨历年真题解析(09年到18年上半年)-软考中级最新 2018年下半年系统集成项目管理工程师金色考点暨历年真题解析(09年到18年上半年)-软考中级最新 ...
- golang(8):使用golang 的 encoding/json 做解析,然后转换成 create sql
前言 本文的原文连接是: https://blog.csdn.net/freewebsys/article/details/88837310 未经博主允许不得转载. 博主地址是:http://blog ...
- MyBatis核心源码剖析(SqlSession XML解析 Mapper executor SQL执行过程 自定义类型处理器 缓存 日志)
MyBatis核心源码剖析 MyBatis核心源码剖析 1 MyBatis源码概述 1.1 为什么要看MyBatis框架的源码 1.2 如何深入学习MyBatis源码 1.3 源码分析的5大原则 2 ...
- 软考是什么?---2023年软考最全解析
软考是什么? 软考全称为:计算机技术与软件专业技术资格(水平)考试,发证机构为国家人力资源和社会保障部.工业和信息化部,简称为:人社部和工信部.中日韩三国互认,证书的含金量很高,有权威性. 计算机软件 ...
- oracle数据库sql的执行过程,Oracle体系结构之SQL语句的执行过程
一般来说,数据库处理SQL都会经过三个过程:解析(parse).执行(exec).返回结果(fetch) 1.解析 当用户发起一个SQL语句时,Oracle通过Server Process 接收SQL ...
- java sql绑定_在JAVA 源程序中编写SQL语句时使用ORACLE 绑定变量
在Java中,结合使用setXXX 系列方法,可以为不同数据类型的绑定变量进行赋值,从而大大优化了SQL 语句的性能. 没有使用绑定变量是使用Oracle数据库的应用系统性能问题主要原因和可伸缩性的主 ...
- oracle一条sql的执行过程,请问执行一条sql的整个过程是怎样的,谢谢!
select count(*) into c from yaoyao_pbj where object_id=7559; select count(*) into c from yaoyao_pbj ...
最新文章
- MathType6.9b安装及在Word2013中无法正常使用的解决方法
- hibernate和struts2实现分页功能
- 3D点云two-stage目标检测方法优化综述
- css杂项,清除浮动
- Codeforces Round #521 (Div. 3)
- 【区块链基础知识系列】 第8课 区块链之零知识证明
- [转]JS获取当前对象大小以及屏幕分辨率等
- Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (四) —— ContentProvider...
- python随机发红包_python 微信红包随机金额
- 加州大学黑科技:激光使电子设备不再依赖半导体材料
- 《转》浅谈CSRF攻击方式
- 取出字符串strName前4个汉字
- 自动化测试的点点滴滴经验积累
- link.html百度云,网盘链接自取
- springboot基于微信小程序的高校学生疫情在校封闭管理系统的设计与实现毕业设计源码240904
- np.percentile()函数
- ebtables Basic examples
- Caffe中的损失函数
- Wireshark 抓取 iphone 测试机的数据包
- 力扣347——前K个高频元素
热门文章
- qlv转mp4绿色版工具
- 小白白红队初成长(4)文件的面纱
- 分布式的十个大坑,我们都别再踩了
- Failure recovering jobs: Lock wait timeout exceeded; try restarting transaction
- 《数据库原理与运用》上机实验之SPJ
- 数据库sql中S P J SPJ 表的创建
- 域名被hold了怎么办?
- div九宫格图片布局
- pip install报错 There was a problem confirming the ssl certificate…
- 珠峰高 8848 米,一张纸 0.01 米,这张纸对折多少次后高度超过珠峰