查看: 18161|回复: 25

[笔记] fast parse,soft parse,hard parse的区别

[复制链接]
论坛徽章:
13
数据库板块每日发贴之星
日期:2007-09-20 01:04:22铁扇公主
日期:2012-02-21 15:02:402010新春纪念徽章
日期:2010-03-01 11:08:28月度精华徽章
日期:2009-04-01 02:15:18数据库板块每日发贴之星
日期:2008-05-17 01:02:08生肖徽章2007版:兔
日期:2008-04-07 19:49:48生肖徽章2007版:鼠
日期:2008-01-02 17:35:53生肖徽章2007版:鸡
日期:2008-01-02 17:35:53ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44数据库板块每日发贴之星
日期:2007-10-20 01:03:31
跳转到指定楼层
1#
发表于 2007-10-22 21:08 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
Oracle发布一个SQL语句的处理过程:
1、将该语句转化成ASCII等效数字码
2、将ASCII等效数字码传递给一个散列算法,由该散列算法产生一个单独的散列
3、搜索当前用户的session缓存中(在PGA中)是否存在相同的散列版本,如果存在,就直接执行该语句。这就是fast parse。
4、如果在PGA中没有命中,查找其他的session中是否有相同的散列,这就需要到共享池的库缓存中对查找。如果在库缓存中找到相同的散列。这就是soft parse。
5、若在3和4中都没有找到相同散列,用户进程进行语法检查过程(Syntax Check)。语法检查主要时检查语法是否符合SQL Reference Manual中给出的SQL语法。
6、语法检查通过之后,再进行语义分析过程(Semantic Analysis)。这个过程就是检查对象的合法性。检查表是否存在,列是否存在,是否有权限访问等等。
7、选择执行计划。准备从可用的执行计划中选择一个执行计划,其中包括存储大纲(srored outline)或物化视图(materialized view)相关的决定。
8、生成该语句的一个编译代码(p-code)。这完整的整个步骤就是hard parse。

example:
SQL>select * from test ;  --hard parse
SQL>select * from TEST ;  --hard parse
SQL>select * from test ;  --soft parse
SQL>alter session set session_cached_cursors=100;
SQL>select * from test ;  --soft parse
SQL>select * from test ;  --fast parse

这是我理解的oracle对SQL语句的处理的一个步骤,但是在网上可以看到很多对这个的解释的步骤跟我这里理解的不一样。但是我也没有找到官方的或者比较权威的资料来阐述这个步骤的,希望哪位达达来指点一下。
论坛徽章:
26
2009新春纪念徽章
日期:2009-01-04 14:52:28咸鸭蛋
日期:2011-11-13 14:16:262012新春纪念徽章
日期:2012-01-04 11:51:22紫蛋头
日期:2012-02-02 13:13:42玉石琵琶
日期:2012-02-21 15:04:38蛋疼蛋
日期:2012-03-09 08:25:45奥运纪念徽章
日期:2012-11-27 15:37:34复活蛋
日期:2012-12-07 13:05:172013年新春福章
日期:2013-02-25 14:51:242014年世界杯参赛球队:西班牙
日期:2014-06-26 12:03:53
26#
发表于 2014-12-18 00:10 | 只看该作者
谢谢!

使用道具 举报

回复
论坛徽章:
5
咸鸭蛋
日期:2012-12-09 22:25:322013年新春福章
日期:2013-02-25 14:51:24复活蛋
日期:2013-03-05 15:00:38马自达
日期:2013-07-31 10:31:17问答徽章
日期:2013-11-20 09:59:28
25#
发表于 2013-2-3 22:58 | 只看该作者

使用道具 举报

回复
求职 : 数据库开发
论坛徽章:
16
2010广州亚运会纪念徽章:现代五项
日期:2010-11-11 18:26:56ITPUB社区千里马徽章
日期:2013-06-09 10:15:342013年新春福章
日期:2013-05-27 10:23:002013年新春福章
日期:2013-05-27 10:23:002013年新春福章
日期:2013-05-27 10:23:00奥运纪念徽章
日期:2012-11-15 10:00:34茶鸡蛋
日期:2012-11-01 14:47:59奥运纪念徽章
日期:2012-10-22 10:10:52ITPUB 11周年纪念徽章
日期:2012-10-09 18:09:19ITPUB 11周年纪念徽章
日期:2012-09-28 17:34:42
24#
发表于 2012-7-19 10:20 | 只看该作者
我一直以为SQL的解析只有软解析和硬解析呢,原来还有个fast parse,学习了!!
好贴再老也要顶~~

使用道具 举报

回复
论坛徽章:
2
ITPUB十周年纪念徽章
日期:2011-11-01 16:20:282013年新春福章
日期:2013-02-25 14:51:24
23#
发表于 2012-3-19 15:23 | 只看该作者
不错的帖子

使用道具 举报

回复
论坛徽章:
0
22#
发表于 2012-3-14 13:46 | 只看该作者
成太监了,该结贴了

使用道具 举报

回复
论坛徽章:
314
行业板块每日发贴之星
日期:2012-07-12 18:47:29双黄蛋
日期:2011-08-12 17:31:04咸鸭蛋
日期:2011-08-18 15:13:51迷宫蛋
日期:2011-08-18 16:58:25紫蛋头
日期:2011-08-31 10:57:28ITPUB十周年纪念徽章
日期:2011-09-27 16:30:47蜘蛛蛋
日期:2011-10-20 15:51:25迷宫蛋
日期:2011-10-29 11:12:59ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41鲜花蛋
日期:2011-11-09 20:33:30
21#
发表于 2011-7-24 23:45 | 只看该作者
原帖由 ZALBB 于 2010-1-15 13:58 发表


1、检查是否有打开的游标,如果有,则直接通过游标link到位于PGA的private SQL AREA( private SQL area),转步骤11。否则,执行步骤2。

请问:此步骤与我们要执行的语句有何关系?两者如何匹配上的?或者说:检查是否有打开的游标?这里的游标是不是指:要执行的
SQL语句?若是,它俩是如何比较的?



检查是否有打开的游标, 问: 如何检查?

使用道具 举报

回复
论坛徽章:
13
数据库板块每日发贴之星
日期:2010-08-24 01:01:012012新春纪念徽章
日期:2012-01-04 11:57:13ITPUB十周年纪念徽章
日期:2011-11-01 16:25:51数据库板块每日发贴之星
日期:2011-07-11 01:01:01ITPUB伯乐
日期:2011-06-16 10:11:39ITPUB季度 技术新星
日期:2011-01-17 11:30:46授权会员
日期:2010-12-28 19:29:32ITPUB9周年纪念徽章
日期:2010-10-08 09:28:51数据库板块每日发贴之星
日期:2010-09-07 01:01:01数据库板块每日发贴之星
日期:2010-08-28 01:01:01
20#
发表于 2010-8-30 18:14 | 只看该作者
竟然浮出水面被我看见了,那就必须的顶了!

使用道具 举报

回复
论坛徽章:
0
19#
发表于 2010-8-30 18:06 | 只看该作者
好贴!

使用道具 举报

回复
论坛徽章:
14
季节之章:冬
日期:2010-01-04 13:39:56季节之章:春
日期:2010-03-22 16:42:29ITPUB知识分享者
日期:2010-06-28 10:02:43季节之章:夏
日期:2010-07-16 09:20:442010世博会纪念徽章
日期:2010-07-22 11:35:022010世博会纪念徽章
日期:2010-08-09 10:41:19ITPUB季度 技术新星
日期:2010-08-31 10:47:25季节之章:秋
日期:2010-12-10 16:23:30ITPUB官方微博粉丝徽章
日期:2011-07-20 17:06:48
18#
发表于 2010-8-3 20:35 | 只看该作者
好贴!!

使用道具 举报

回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表