查看: 3113|回复: 6

oracle优化器内部到底如何得出执行计划?

[复制链接]
论坛徽章:
5
2009日食纪念
日期:2009-07-22 09:30:002010新春纪念徽章
日期:2010-03-01 11:08:24ITPUB9周年纪念徽章
日期:2010-10-08 09:28:52ITPUB十周年纪念徽章
日期:2011-11-01 16:24:512012新春纪念徽章
日期:2012-01-04 11:54:46
发表于 2009-7-13 10:51 | 显示全部楼层 |阅读模式
如题,有没有这方面的资料
对于复杂SQL语句,多个表之间的连接类型以及执行顺序又是如何确定的?

[ 本帖最后由 test5008 于 2009-7-13 11:11 编辑 ]
论坛徽章:
9
2009新春纪念徽章
日期:2009-01-04 14:52:28祖国60周年纪念徽章
日期:2009-10-09 08:28:00ITPUB9周年纪念徽章
日期:2010-10-08 09:28:51蛋疼蛋
日期:2011-08-09 14:26:55ITPUB十周年纪念徽章
日期:2011-11-01 16:24:51ITPUB 11周年纪念徽章
日期:2012-10-09 18:09:19奥迪
日期:2013-09-12 15:57:042014年新春福章
日期:2014-02-18 16:43:09马上有钱
日期:2014-02-18 16:43:09
发表于 2009-7-13 11:01 | 显示全部楼层
不知道如何得到,我只知道CBO根据表,索引等信息来建立执行计划,然后通过CBO来计算COST。

使用道具 举报

回复
论坛徽章:
4
授权会员
日期:2007-02-07 07:55:43会员2007贡献徽章
日期:2007-09-26 18:42:102010广州亚运会纪念徽章:田径
日期:2011-01-27 11:07:402011新春纪念徽章
日期:2011-02-18 11:43:35
发表于 2009-7-13 11:07 | 显示全部楼层
我的理解应该是计算各种可能执行路径组合的cost,最后选择最小cost的计划。表访问,表连接之类的方式就那么几种,可以遍历,或者有更优算法提前筛选掉一些可能性,不过成本还是不低,所以要尽量避免hard parse。

使用道具 举报

回复
招聘 : 数据库管理员
认证徽章
论坛徽章:
20
祖国60周年纪念徽章
日期:2009-10-09 08:28:00数据库板块每日发贴之星
日期:2011-02-20 01:01:01ITPUB季度 技术新星
日期:2011-04-02 10:31:09ITPUB十周年纪念徽章
日期:2011-11-01 16:24:042012新春纪念徽章
日期:2012-01-04 11:54:26玉石琵琶
日期:2012-02-21 15:04:38最佳人气徽章
日期:2012-03-13 17:39:18ITPUB 11周年纪念徽章
日期:2012-10-09 18:09:192013年新春福章
日期:2013-02-25 14:51:242011新春纪念徽章
日期:2011-02-18 11:43:33
发表于 2009-7-13 11:12 | 显示全部楼层
你可以做个10053  来看看就明白了。。。。

使用道具 举报

回复
论坛徽章:
5
2009日食纪念
日期:2009-07-22 09:30:002010新春纪念徽章
日期:2010-03-01 11:08:24ITPUB9周年纪念徽章
日期:2010-10-08 09:28:52ITPUB十周年纪念徽章
日期:2011-11-01 16:24:512012新春纪念徽章
日期:2012-01-04 11:54:46
 楼主| 发表于 2009-7-15 12:32 | 显示全部楼层
10053  trace文件内容很复杂

[ 本帖最后由 test5008 于 2009-7-15 12:51 编辑 ]

使用道具 举报

回复
论坛徽章:
14
2012新春纪念徽章
日期:2012-01-04 11:58:182012新春纪念徽章
日期:2012-02-07 09:59:35ITPUB十周年纪念徽章
日期:2011-11-01 16:26:59马上加薪
日期:2014-08-09 14:42:472014年世界杯参赛球队: 美国
日期:2014-06-04 09:05:20优秀写手
日期:2014-03-12 06:00:13马上有对象
日期:2014-02-18 16:44:082014年新春福章
日期:2014-02-18 16:44:082013年新春福章
日期:2013-02-25 14:51:24奥运会纪念徽章:水球
日期:2012-10-11 16:40:16
发表于 2012-3-4 12:52 | 显示全部楼层
本帖最后由 ziling2011 于 2012-3-4 12:58 编辑

不得不说10053 trace文件里很详细,会计算每种连接,每每访问方式cost是多少,然后选择最优的生成执行计划。

使用道具 举报

回复
论坛徽章:
17
2008新春纪念徽章
日期:2008-02-13 12:43:032014年新春福章
日期:2014-02-18 16:42:02优秀写手
日期:2013-12-18 09:29:13奥迪
日期:2013-09-12 15:57:04凯迪拉克
日期:2013-08-26 22:55:57红旗
日期:2013-08-15 13:57:06茶鸡蛋
日期:2013-05-29 11:38:412013年新春福章
日期:2013-02-25 14:51:24ITPUB季度 技术新星
日期:2012-02-16 14:53:162012新春纪念徽章
日期:2012-01-04 11:51:22
发表于 2012-3-4 19:35 | 显示全部楼层
"对于复杂SQL语句,多个表之间的连接类型以及执行顺序又是如何确定的?"

Access path analysis 访问路径分析是 optimize中的一个模块

它负责:
1. 单表访问路径
2. 初始化 连接顺序 join order

3. 评估 join成本 estimate join cost, 包括:

NL Cost
Sort Merge cost
Hash join cost

4. 排除 排序 eliminate sort

5. 生成下一个 连接序列 Generate next Join permutation

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

SACC2019中国系统架构师大会

【数字转型 架构演进】SACC2019中国系统架构师大会,7折限时优惠重磅来袭!
2019年10月31日~11月2日第11届中国系统架构师大会(SACC2019)将在北京隆重召开。四大主线并行的演讲模式,1个主会场、20个技术专场、超千人参与的会议规模,100+来自互联网、金融、制造业、电商等领域的嘉宾阵容,将为广大参会者提供一场最具价值的技术交流盛会。

限时七折期:2019年8月31日前


----------------------------------------

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