123
返回列表 发新帖
楼主: eygle

[精华] 关于CBO对于执行计划的影响,一个实际分析的过程!

[复制链接]
论坛徽章:
86
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20咸鸭蛋
日期:2012-05-08 10:27:19版主8段
日期:2012-05-15 15:24:112013年新春福章
日期:2013-02-25 14:51:24
21#
发表于 2003-5-30 17:42 | 只看该作者

dbms_stats.set_* 包可以随意的设置任何表和索引的statistics

不用拥有真实的数据
也可以评估你的 执行计划!

大家有兴趣去做个测试

使用道具 举报

回复
论坛徽章:
1
2010新春纪念徽章
日期:2010-03-01 11:08:27
22#
发表于 2003-5-30 17:53 | 只看该作者
EAGLE能否将CBO下使用/不使用OUTLINE的实验做一做,给大家一个答案啊

使用道具 举报

回复
论坛徽章:
117
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20版主7段
日期:2012-05-15 15:24:11ITPUB 11周年纪念徽章
日期:2012-09-28 17:34:42ITPUB 11周年纪念徽章
日期:2012-10-09 18:03:32紫蛋头
日期:2013-03-04 17:00:07优秀写手
日期:2013-12-18 09:29:09
23#
 楼主| 发表于 2003-5-30 17:56 | 只看该作者
关于CBO成本的计算以及多表联合的执行计划选择,这里有一篇很好的文档给大家参考:

http://www.centrexcc.com/A%20Loo ... 2010053%20Event.pdf

使用道具 举报

回复
论坛徽章:
1
授权会员
日期:2005-10-30 17:05:33
24#
发表于 2003-5-30 22:12 | 只看该作者
我还是认为时间不是花在选执行计划上,而是cbo选择了执行效率低的执行计划导致查询变慢。
在实际应用中,即使只有两个表做连接,cbo也很有可能选择了低效的执行计划。尤其是代码bind varible后,cbo选低效执行计划的概率就更大了。在cbo这一点上,oracle确实不如db2

我前面说的的store outline的意思再明确一下:如果是cbo把时间花在选执行计划上的话,那么使用stored outline 或第二次执行的话,cbo不会重新生成执行计划,也就是说速度会变快。但实际情况不是这样的。就上面的那个sql,使用cbo不加hint的话,多次执行,时间不会有太大的变化,但是 除了第一次是不会再生成执行计划的。

使用道具 举报

回复
论坛徽章:
86
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20咸鸭蛋
日期:2012-05-08 10:27:19版主8段
日期:2012-05-15 15:24:112013年新春福章
日期:2013-02-25 14:51:24
25#
发表于 2003-5-31 14:59 | 只看该作者

可选择的更多

最初由 Seraphim 发布
[B]但是我不明白的是:
按理说Oracle在没有alter session set optimizer_max_permutations = 100;之前应该比之后有更充足的执行计划用以比较,为什么反而会选择执行效率偏低的Plan呢? [/B]


可选的更多,选中更差的概率也可能变大了噢!

假设 10个执行计划,其中1个很好,增加10个执行计划供选择,实际上这后面10个里面的都不好,但有可能评估cost却是好的,那就……

要注意oracle的优化器的最优选择率通常不高于  80%  噢!

使用道具 举报

回复
论坛徽章:
92
2011新春纪念徽章
日期:2011-01-25 15:42:33咸鸭蛋
日期:2012-03-19 10:46:00版主1段
日期:2012-05-15 15:24:11奥运会纪念徽章:排球
日期:2012-08-29 07:02:50奥运会纪念徽章:跳水
日期:2012-09-26 06:44:27ITPUB 11周年纪念徽章
日期:2012-09-28 17:34:42ITPUB 11周年纪念徽章
日期:2012-10-09 18:03:32奥运会纪念徽章:击剑
日期:2012-10-12 07:20:332013年新春福章
日期:2013-02-25 14:51:242012新春纪念徽章
日期:2012-02-13 15:13:20
26#
发表于 2003-5-31 16:14 | 只看该作者

数据库版本?

在8i中,8.17之前,优化器常常生成不了足够的执行计划排列以找到最优的数据表连接顺序。在8.17里对这个问题加了各补丁程序,修改了在提高找到最优方案的机会的尝试中选择初始连接顺序的算法。要启用这个算法,你必须在初始化文件里面添加一个隐含初始化参数:new_initial_join_orders,并设置为true

使用道具 举报

回复
论坛徽章:
117
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20版主7段
日期:2012-05-15 15:24:11ITPUB 11周年纪念徽章
日期:2012-09-28 17:34:42ITPUB 11周年纪念徽章
日期:2012-10-09 18:03:32紫蛋头
日期:2013-03-04 17:00:07优秀写手
日期:2013-12-18 09:29:09
27#
 楼主| 发表于 2003-5-31 20:28 | 只看该作者

Re: 可选择的更多

最初由 biti_rainy 发布
[B]

可选的更多,选中更差的概率也可能变大了噢!

假设 10个执行计划,其中1个很好,增加10个执行计划供选择,实际上这后面10个里面的都不好,但有可能评估cost却是好的,那就……

要注意oracle的优化器的最优选择率通常不高于  80%  噢! [/B]


biti这个解释可能比较接近!

不知道80%这个数字来自何处?

使用道具 举报

回复
论坛徽章:
86
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20咸鸭蛋
日期:2012-05-08 10:27:19版主8段
日期:2012-05-15 15:24:112013年新春福章
日期:2013-02-25 14:51:24
28#
发表于 2003-6-1 17:51 | 只看该作者

Re: Re: 可选择的更多

最初由 eygle 发布
[B]

biti这个解释可能比较接近!

不知道80%这个数字来自何处? [/B]


这个数字,呵呵
偶们CTO多年来得出来的

使用道具 举报

回复
论坛徽章:
117
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20版主7段
日期:2012-05-15 15:24:11ITPUB 11周年纪念徽章
日期:2012-09-28 17:34:42ITPUB 11周年纪念徽章
日期:2012-10-09 18:03:32紫蛋头
日期:2013-03-04 17:00:07优秀写手
日期:2013-12-18 09:29:09
29#
 楼主| 发表于 2003-6-4 16:48 | 只看该作者
幸运的是在Oracle9i中,optimizer_max_permutations初始值降低到2000,从80000到2000,这是一个重大的进步

使用道具 举报

回复

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

本版积分规则 发表回复

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