3.硬解析,软解析,软软解析

v$sql ->存子游标信息(每个子游标对应一次硬解析),关键信息是执行环境和执行计划

v$sqlarea ->存父游标信息,对应sql语句的文本

在v$sql中一个sql_id会存在多条语句,实际上v$sql中sql_id和child_number共同确定一个唯一的sql,原因是一个sql_id对应多个子游标。

  1. 不同schema下相同sql,sql_id相同,单查询的对象不是同一用户
  2. 由于统计信息或者变量窥视,导致执行计划变化

游标的概念:指内存中可执行的sql对象,即SQL已经生成了执行计划。

父子游标都是可以共享的,称为共享游标,sql执行之前还要在会话的私有内存里生成1个会话游标,用于保存执行过程信息,这个在不同会话间是不能共享的,会话游标对应的视图v$open_cursor

硬解析:共享池中找不到游标,需要重新生成执行计划,即子游标(也可能包括父游标)

软解析:共享池中匹配到了子游标,但是需要生成会话游标

软软解析:会话游标和共享游标都不需要重新生成

v$sql的字段

child_number:sql子游标号,每个sql_id从0开始

LOADS:产生子游标的次数,即硬解析次数,该值不一定跟v$sql的子游标数量一致,因为子游标可能被回收,清除

EXECUTIONS:执行次数,表示sql执行了几次

PARSE_CALLS:执行解析的次数,包括硬解析和软解析

PLAN_HASH_VALUE:执行计划的hash_value

案例:使用了绑定变量也可能产生硬解析

select * from scott.emp e where e.ename = ‘abc‘

select * from scott.emp e where e.ename = ‘aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa‘

经测试,如果绑定变量长度差距太大,也可能触发硬解析,即使禁止变量窥视(_optim_peek_user_binds=false)也不行。

v$sql_shared_cursor,根据sql_id找到硬解析原因

CURSOR_SHARING

exact:默认,sql语句完全相同(执行环境都得相同,比如查询表的数据分布),若有不同,则不会共享游标

force:强制绑定变量

similar:在oracle认为某条语句谓词条件可能会影响他的执行计划,才会被重新分析,否则重用sql

时间: 2024-08-02 01:18:50

3.硬解析,软解析,软软解析的相关文章

共享池之八:软解析、硬解析、软软解析 详解一条SQL在library cache中解析涉及的锁

先来张大图: 结合上图来说明一下解析的各个步骤涉及的锁. 软解析.硬解析.软软解析区别的简单说明: 为了将用户写的sql文本转化为oracle认识的且可执行的语句,这个过程就叫做解析过程. 解析分为硬解析和软解析,SQL语句第一次解析时必须进行硬解析 一句话说明硬解析与软解析的区别是: 硬解析=需要生成执行计划   软解析=不需要生成执行计划 在Oracle中存在两种类型的SQL语句,一类为DDL语句,不共享使用,也就是每次执行都需要进行硬解析.还有一类就是DML语句,会进行硬解析或软解析. 硬

Android初级教程:Android中解析方式之pull解析

在安卓中有很多种解析方式.按照大方向有xml解析和json解析.而,细致的分,xml和json解析各有自己的很多解析方式.今天这一篇主要介绍xml解析中的pull解析.对于xml的解析方式,我之前在javaweb一些知识中有写过dom和dom4j等等解析方式.有兴趣的读者可以去javaweb篇里面找相关的内容. 先自定义一个数据源,假设就是访问服务器返回的xml数据文件名称为weather.xml: <?xml version='1.0' encoding='utf-8' standalone=

iOS中的数据解析(XML,JSON),SAX解析,DOM解析

第三方 SAT解析 #import "SAXTableViewController.h" #import "Student.h" @interface SAXTableViewController ()<NSXMLParserDelegate> @property (nonatomic, retain) NSMutableArray *dataSourse; // 存储学生对象 @property (nonatomic, retain) Student

Android解析XML之SAX解析器

SAX(Simple API for XML)解析器是一种基于事件的解析器,它的核心是事件处理模式,主要是围绕着事件源以及事件处理器来工作的.当事件源产生事件后,调用事件处理器相应的处理方法,一个事件就可以得到处理.在事件源调用事件处理器中特定方法的时候,还要传递给事件处理器相应事件的状态信息,这样事件处理器才能够根据提供的事件信息来决定自己的行为. SAX解析器的优点是解析速度快,占用内存少.非常适合在Android移动设备中使用. SAX相关类及API DefaultHandler:是一个事

html解析器——jericho-html-3.3解析table

原文部分内容来源于网上其他博客,不过由于时间长了,忘记参考的是谁的了,在此说声抱歉.. 先贴出一段html页面: <html> <head> <meta http-equiv="content-type" content="text/html;charset=GBK"> <title>HTML Parser</title> <meta name="generator" conten

java拾遗3----XML解析(三) StAX PULL解析

使用PULL方式解析XML: Pull是STAX的一个实现 StAX是The Streaming API for XML的缩写,一种利用拉模式解析(pull-parsing)XML文档的API StAX通过提供一种基于事件迭代器(Iterator)的API让程序员去控制xml文档解析过程. 为什么说StAX方式的效率优于SAX呢? 因为SAX 是推模式的,所有的操作在解析器自动控制下进行,所有事件都会处理,不管需不需要解析整个文档,解析器都会自动启动解析任务,然后按顺序向下解析,直到解析完成才终

Xml解析方式之Pull解析器的使用

xml有多种解析的方式,这篇文章只介绍用pull解析器来解析XML文件,接下来我会说明使用Pull解析器来读取Xml文件内容和新建Xml文件. 读取Xml文件的内容 我在项目中已经添加了一个Xml文件,"data.xml",下面是Xml文件里面的内容. <?xml version="1.0" encoding = "utf-8"?> <persons> <person id = "23">

正向解析区域、反向解析区域;主/从;子域;基本安全控制

  正向解析区域.反向解析区域:主/从:子域:基本安全控制 一.背景: DNS服务器所提供的服务是完成将主机名和转换为IP地址的工作.为什么需要将主机名转换为IP地址的工作呢?这是因为,当网络上的一台客户机访问某一服务器上的资源时,用户在浏览器地址栏中输入的是人类便于识记的主机名和域名.而网络上的计算机之间实现连接却是通过每台计算机在网络中拥有的惟一的IP地址来完成的,这样就需要在用户容易记忆的地址和计算机能够识别的地址之间有一个解析,DNS服务器便充当了地址解析的重要角色. 正向解析就是通过域

MYSQL 源代码 编译原理 AST和解析树 代码语法解析

MYSQL 源代码 编译原理 AST和解析树 代码语法解析 http://blog.csdn.net/wfp458113181wfp/article/details/17082355 使用AST树 分类:             antlr              2013-12-02 22:39     255人阅读     评论(0)     收藏     举报 目录(?)[+] 第五章使用AST树中间结果来计算表达式值 创建ASTS 第五章.使用AST树中间结果来计算表达式值 现在我们已