- 浏览: 379599 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (215)
- ubuntu (27)
- 虚拟机 (13)
- 数据库 (29)
- JAVA (40)
- 搜索 (23)
- 开发工具 (2)
- 产品 (2)
- 工具 (1)
- 应用服务器 (5)
- linux (17)
- log (1)
- 多线程 (3)
- 异常 (1)
- shell (6)
- 12306 ;互联网 (1)
- 持续集成&Hudson (4)
- js (1)
- JAVA OR-Map (1)
- 漏洞 (1)
- svn (1)
- MAVEN (3)
- 架构 (1)
- windows (1)
- json (1)
- web (3)
- jenkins (2)
- iptables (2)
- JAVA ssh (0)
- 项目管理 (1)
- tomcat (1)
- 安全 (1)
- 数据库 mysql (1)
- 性能 (1)
最新评论
-
sbwfgihc:
怎么用的啊,
<转>mysql 树查询语句 -
panghaoyu:
实现一个智能提示功能需要ajax、数据库、jsp/php、算法 ...
<转>Solr Suggest实现搜索智能提示 -
songsove:
请问您qq多少
solr 对拼音搜索和拼音首字母搜索的支持 -
panghaoyu:
实现一个智能提示功能需要ajax、数据库、jsp/php、算法 ...
<转>Solr Suggest实现搜索智能提示 -
norain1988:
这样就可以实现相关搜索了吗
solr 百度相关搜索类似功能的实现
原链接:http://soft.chinabyte.com/database/468/12178468.shtml
问题一:哪个进程负责硬解析?shared pool设置不合理除了命中率低外还有哪些现象?
说到软解析(soft prase)和硬解析(hard prase),就不能不说一下Oracle对sql的处理过程。当你发出一条sql语句交付Oracle,在执行和获取结果前,Oracle对此sql将进行几个步骤的处理过程:
1、语法检查(syntax check)
检查此sql的拼写是否语法。
2、语义检查(semantic check)
诸如检查sql语句中的访问对象是否存在及该用户是否具备相应的权限。
3、对sql语句进行解析(prase)
利用内部算法对sql进行解析,生成解析树(parse tree)及执行计划(execution plan)。
4、执行sql,返回结果(execute and return)
其中,软、硬解析就发生在第三个过程里。
Oracle利用内部的hash算法来取得该sql的hash值,然后在library cache里查找是否存在该hash值;
假设存在,则将此sql与cache中的进行比较;
假设“相同”,就将利用已有的解析树与执行计划,而省略了优化器的相关工作。这也就是软解析的过程。
诚然,如果上面的2个假设中任有一个不成立,那么优化器都将进行创建解析树、生成执行计划的动作。这个过程就叫硬解析。
创建解析树、生成执行计划对于sql的执行来说是开销昂贵的动作,所以,应当极力避免硬解析,尽量使用软解析。
这就是在很多项目中,倡导开发设计人员对功能相同的代码要努力保持代码的一致性,以及要在程序中多使用绑定变量的原因。
/****************************************************/
问题二、大家都在说在Sql中使用了Bind Var(绑定变量)会提高不少性能,那他到底是如何提高性能的呢?
使用了Bind Var能提高性能主要是因为这样做可以尽量避免不必要的硬分析(Hard Parse)而节约了时间,同时节约了大量的CPU资源。
当一个Client提交一条Sql给Oracle后,Oracle 首先会对其进行解析(Parse),然后将解析结果提交给优化器(Optimiser)来进行优化而取得Oracle认为的最优的Query Plan,然后再按照这个最优的Plan来执行这个Sql语句(当然在这之中如果只需要软解析的话会少部分步骤)。
但是,当Oracle接到 Client提交的Sql后会首先在共享池(Shared Pool)里面去查找是否有之前已经解析好的与刚接到的这一个Sql完全相同的Sql(注意这里说的是完全相同,既要求语句上的字符级别的完全相同,又要求涉及的对象也必须完全相同)。当发现有相同的以后解析器就不再对新的Sql在此解析而直接用之前解析好的结果了。这里就节约了解析时间以及解析时候消耗的CPU资源。尤其是在OLTP中运行着的大量的短小Sql,效果就会比较明显了。因为一条两条Sql的时间可能不会有多少感觉,但是当量大了以后就会有比较明显的感觉了。
上面说到了硬解析(Hard Parse),那这个Hard Parse到底是个啥呢?
Parse主要分为三种:
1、Hard Parse (硬解析)
2、Soft Parse (软解析)
3、Soft Soft Parse(好像有些资料中并没有将这个算在其中)
Hard Parse就是上面提到的对提交的Sql完全重新从头进行解析(当在Shared Pool中找不到时候将会进行此操作),总共有一下5个执行步骤:
1:语法分析
2:权限与对象检查
3:在共享池中检查是否有完全相同的之前完全解析好的—如果存在,直接跳过4和5,运行Sql(此时算soft parse)
4:选择执行计划
5:产生执行计划
Soft Parse就如果是在Shared Pool中找到了与之完全相同的Sql解析好的结果后会跳过Hard Parse中的后面的两个步骤。
Soft Soft Parse实际上是当设置了session_cursor_cache这个参数之后,Cursor被直接Cache在当前Session的PGA中的,在解析的时候只需要对其语法分析、权限对象分析之后就可以转到PGA中查找了,如果发现完全相同的Cursor,就可以直接去取结果了,也就就是实现了 Soft Soft Parse.
不过在计算解析次数的时候是只计算Hard Parse和Soft Parse的(其实Soft Soft Parse好像也并不能算是做了Parse ):Soft Parse百分比计算:Round(100*(1-:hprs/:prse),2) [hprs:硬解析次数;prse:解析次数] Parse比率计算: Round(100*(1-prse/exec) ,2) [exec:执行次数]
问题一:哪个进程负责硬解析?shared pool设置不合理除了命中率低外还有哪些现象?
说到软解析(soft prase)和硬解析(hard prase),就不能不说一下Oracle对sql的处理过程。当你发出一条sql语句交付Oracle,在执行和获取结果前,Oracle对此sql将进行几个步骤的处理过程:
1、语法检查(syntax check)
检查此sql的拼写是否语法。
2、语义检查(semantic check)
诸如检查sql语句中的访问对象是否存在及该用户是否具备相应的权限。
3、对sql语句进行解析(prase)
利用内部算法对sql进行解析,生成解析树(parse tree)及执行计划(execution plan)。
4、执行sql,返回结果(execute and return)
其中,软、硬解析就发生在第三个过程里。
Oracle利用内部的hash算法来取得该sql的hash值,然后在library cache里查找是否存在该hash值;
假设存在,则将此sql与cache中的进行比较;
假设“相同”,就将利用已有的解析树与执行计划,而省略了优化器的相关工作。这也就是软解析的过程。
诚然,如果上面的2个假设中任有一个不成立,那么优化器都将进行创建解析树、生成执行计划的动作。这个过程就叫硬解析。
创建解析树、生成执行计划对于sql的执行来说是开销昂贵的动作,所以,应当极力避免硬解析,尽量使用软解析。
这就是在很多项目中,倡导开发设计人员对功能相同的代码要努力保持代码的一致性,以及要在程序中多使用绑定变量的原因。
/****************************************************/
问题二、大家都在说在Sql中使用了Bind Var(绑定变量)会提高不少性能,那他到底是如何提高性能的呢?
使用了Bind Var能提高性能主要是因为这样做可以尽量避免不必要的硬分析(Hard Parse)而节约了时间,同时节约了大量的CPU资源。
当一个Client提交一条Sql给Oracle后,Oracle 首先会对其进行解析(Parse),然后将解析结果提交给优化器(Optimiser)来进行优化而取得Oracle认为的最优的Query Plan,然后再按照这个最优的Plan来执行这个Sql语句(当然在这之中如果只需要软解析的话会少部分步骤)。
但是,当Oracle接到 Client提交的Sql后会首先在共享池(Shared Pool)里面去查找是否有之前已经解析好的与刚接到的这一个Sql完全相同的Sql(注意这里说的是完全相同,既要求语句上的字符级别的完全相同,又要求涉及的对象也必须完全相同)。当发现有相同的以后解析器就不再对新的Sql在此解析而直接用之前解析好的结果了。这里就节约了解析时间以及解析时候消耗的CPU资源。尤其是在OLTP中运行着的大量的短小Sql,效果就会比较明显了。因为一条两条Sql的时间可能不会有多少感觉,但是当量大了以后就会有比较明显的感觉了。
上面说到了硬解析(Hard Parse),那这个Hard Parse到底是个啥呢?
Parse主要分为三种:
1、Hard Parse (硬解析)
2、Soft Parse (软解析)
3、Soft Soft Parse(好像有些资料中并没有将这个算在其中)
Hard Parse就是上面提到的对提交的Sql完全重新从头进行解析(当在Shared Pool中找不到时候将会进行此操作),总共有一下5个执行步骤:
1:语法分析
2:权限与对象检查
3:在共享池中检查是否有完全相同的之前完全解析好的—如果存在,直接跳过4和5,运行Sql(此时算soft parse)
4:选择执行计划
5:产生执行计划
Soft Parse就如果是在Shared Pool中找到了与之完全相同的Sql解析好的结果后会跳过Hard Parse中的后面的两个步骤。
Soft Soft Parse实际上是当设置了session_cursor_cache这个参数之后,Cursor被直接Cache在当前Session的PGA中的,在解析的时候只需要对其语法分析、权限对象分析之后就可以转到PGA中查找了,如果发现完全相同的Cursor,就可以直接去取结果了,也就就是实现了 Soft Soft Parse.
不过在计算解析次数的时候是只计算Hard Parse和Soft Parse的(其实Soft Soft Parse好像也并不能算是做了Parse ):Soft Parse百分比计算:Round(100*(1-:hprs/:prse),2) [hprs:硬解析次数;prse:解析次数] Parse比率计算: Round(100*(1-prse/exec) ,2) [exec:执行次数]
发表评论
-
MYSQL--表分区、查看分区(转)
2014-12-15 21:50 688原文地址:http://blog.csdn ... -
<转>Mysql 慢查询和慢查询日志分析
2014-08-30 15:09 1167原链接:http://www.cnblogs.com/wrmf ... -
<转>MySQL锁定状态查看命令
2014-08-30 14:45 735原链接:http://blog.csdn.net/dc_726 ... -
<转>MySQL 事务没有提交导致 锁等待 Lock wait timeout exceeded
2014-08-30 14:39 962原链接:http://my.oschina.net/jiaoy ... -
mysql函数
2014-05-27 11:20 523select curdate(); ... -
<转>从mysql到内存数据库的一些碎碎念
2014-04-24 15:30 1085原链接:http://blog.csdn.net/ty1921 ... -
修改mysql自增主键的初始值
2014-04-15 17:45 1014默认情况下ID是从1开始递增,如果要修改递增初始值,可在Mys ... -
<转> MySQL的经典用法----临时表与内存表
2014-04-09 15:47 807原链接:http://blog.csdn.net/feihon ... -
<转>mybatis防止sql注入
2014-03-28 10:19 846原链接:http://cs-css.iteye.com/blo ... -
mysql变相实现split
2014-03-10 18:01 790--按split取第2个字符分 ... -
mysql按拼音排序
2013-11-08 14:59 734select * from ac_operator order ... -
<转>深入mysql慢查询设置的详解
2013-10-12 10:22 616原链接:http://www.jb51.net/article ... -
<转>mysql对于大表(千万级),要怎么优化呢?
2013-10-11 18:01 702原链接:http://www.zhihu.com/questi ... -
<转>三个方法优化MySQL数据库查询
2013-10-11 17:18 533原链接:http://www.bitscn.com/pdb/m ... -
<转>详解MySQL中EXPLAIN解释命令
2013-10-11 16:56 714原链接:http://database.51c ... -
<转>mysql导入导出包括函数或者存储过程
2013-09-23 14:33 925mysql导入导出包括函数或者存储过程 1.mysql导出 ... -
mybatis技巧
2013-09-11 17:12 1232集合和in的表示 <delete id="d ... -
<转>MySQL中进行树状所有子节点的查询(写函数)
2013-09-11 09:38 856原链接:http://blog.csdn.net/acmain ... -
<转>mysql 树查询语句
2013-09-10 15:38 6502原链接:http://skudy.iteye.com/blog ... -
关于Oracle中split函数的实现以及函数递归的举例
2013-07-06 17:05 951比如说把一个字符串A,B,C,D,E ...
相关推荐
(SID_NAME = cams)<br> )<br> (SID_DESC =<br> (GLOBAL_DBNAME = oid)<br> (ORACLE_HOME = /u01/app/oracle/product/8.1.7)<br> (SID_NAME = oid)<br> )<br>)<br><br>& 说明<br>1 listener.ora 文件中定义一个监听器...
<br>第三章 语法 <br>语法简述 <br>hello, world <br>嵌入方法 <br>引用文件 <br>程序注释 <br>常量与变量 <br>常量类型 <br>变量类型 <br>变量的使用 <br>运算符号 <br>算术运算 <br>字符串运算 <br>赋值运算 <br>...
58<br><br>0081 文本中首字母改为大写 59<br><br>0082 C#随机数的产生 59<br><br>0083 身份证从15位升至18位算法 60<br><br>0084 十进制数转二进制数的算法 60<br><br>0085 十进制数转八进制数的算法 61...
Oracle中的硬解析与软解析,二者的本质区别
Oracle 硬解析与软解析
<br><br><br>一、使用<br><br>运行BDB,切换至“查询分析”页签,<br>您可以按CTRL+J快捷键列出选择项<br>(默认,可在“选项”中进行更改),<br><br>或直接输入语法,<br>系统会根据当前输入的字符进行智能搜索,...
<br>查询结果集(平均101行)<br><br>(1循环200次select)<br> 1055.1<br> 666.8<br><br>不定字段:710.1<br> 1.58<br><br>1.50<br> <br><br> <br><br>表III –50并发10循环(数据库和测试机同机)<br><br>对比项目<br...
14.5<br>1.32<br><br>1.21<br><br>插入实体<br><br>(20次insert)<br>36.1<br>17.4<br>2.07<br><br>更新实体<br><br>(20次单条update)<br>23.5<br>15.9<br><br>SqlMap:20.3<br>1.48<br><br>1.16<br><br>查询结果集...
Oracle Stream利用高级队列技术,通过解析归档日志,将归<br>档日志解析成DDL 及DML 语句,从而实现数据库之间的同步。这种技术可以将整个数据<br>库、数据库中的对象复制到另一数据库中,通过使用Stream 的技术,对...
18.0<br>1.23<br><br>1.10<br><br>每秒插入实体<br><br>(20次insert)<br>41<br>21<br>1.95<br><br>更新实体<br><br>(20次单条update)<br>27<br>19<br><br>SqlMap:24<br>1.42<br><br>1.13<br><br>查询结果集(平均101...
在数据库中硬解析是万恶之源,为大家提供一个查找并且定位oracle硬解析问题SQL语句脚本
<br>支持Oracle、SQLServer、MySQL、Access、SQLAnywhere和Sybase。<br><br>BDB同时是非常好用的SQL智能化查询分析工具。<br><br>如果您目前使用的是SQLServer的查询分析器进行数据库数据查询分析,<br>那么不妨试...
<string>name</string> <string>字段名称</string> </entry> <entry> <string>alias</string> <string>中文备注</string> </entry> <entry> <string>value</string> <string>数据值</string> </entry> &...
必须在修改过的档案<br><br>中附有明显的说明:您修改了此一档案及任何修改的日期。 您必须让您发布或出版的作品,包括本程式的全部或一部分,或内含本程式的全部或部分所衍生的作品,允许第三方在<br><br>此许可证...
<br><br>功能与特点<br><br> X3-BLOG完美的利用了浏览器的XML解析技术,完全实现数据和界面的分离,使网络传输数据量大大减少,加载速度远远超过了市面上所有的BLOG产品,有效的减轻了服务器的带宽压力,服务器端...
<br><br>功能与特点<br><br> X3BLOG完美的利用了浏览器的XML解析技术,完全实现数据和界面的分离,使网络传输数据量大大减少,加载速度远远超过了市面上所有的BLOG产品,有效的减轻了服务器的带宽压力,服务器端使用...
1.数据建模 (支持:mysql/oracle/sqlserver/db2/postgresql/hive/kylin) <br> 2.多维分析 <br> 3.数据报表 <br> 4.权限管理 <br>## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请...
Oracle硬解析和软解析是我们经常遇到的问题,所以需要考虑何时产生软解析何时产生硬解析,如何判断 SQL的执行过程 当发布一条SQL或PL/SQL命令时,Oracle会自动寻找该命令是否存在于共享池中来决定对当前的语句使用硬...
oracle性能优化
oracle SQL疑难解析 书中SQL 付书SQL oracle-sql-recipes-master