楼主: baikejia

optimizer_mode=choose,表没有分析过,却采用cbo的一个实际例子

[复制链接]
论坛徽章:
5
ITPUB元老
日期:2005-03-15 09:15:43ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44凯迪拉克
日期:2013-12-27 09:30:49
11#
 楼主| 发表于 2006-8-30 10:17 | 只看该作者
如果采用all_rows的hint
那么这个数据库采用的还是全表扫描

别的数据库还是能用到索引。

不知道这个数据库有什么问题,为什么执行计划会这样

使用道具 举报

回复
论坛徽章:
5
ITPUB元老
日期:2005-03-15 09:15:43ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44凯迪拉克
日期:2013-12-27 09:30:49
12#
 楼主| 发表于 2006-8-30 10:30 | 只看该作者
在INIT.ORA中可以为数据库设置确省的优化设置:optimizer_mode,在会话中可以动态的改变优化器模式,如set session set optimizer_goal.。oracle提供了四种优化模式:
(1)。 rule:选择oracle使用基于规则的优化。如果我们试图使用RBO对SQL语句进行优化时,可以设置为RULE。请注意,RBO经常不能选择最优的执行计划,因为它不能够选择最佳的索引
(2)。 CHOOSE:这是ORACLE的默认方式,它会根据是否能够找到统计数字来决定使用那种优化方式,如果没有统计数字的话,它会使用RULE;如果存在统计数字的话,它会根据是否存在索引等信息选择使用FIRST_ROW还是ALL_ROWS。当统计资料不完整时,比如说有的表有,另外一些没有,那么CHOOSE会使用基于成本的优化器,并且在运行是对另外的表做统计和估计,从而影响了效率,甚至导致严重的效率下降问题。
(3)。 FIRST_ROW:使用CBO,它能快速返回最初的几行,因为它通常使用完全索引扫描,从而会造成总体效率降低或者消耗更多的系统资源。往往适合于一些ONLINE系统,因为人们总是希望尽快看到反映。
(4)。 ALL_ROWS:它也是用CBO,但它的不表示是总体反应时间缩短,因为它通常使用并行全表扫描,而不使用完全索引扫描

使用道具 举报

回复
论坛徽章:
5
ITPUB元老
日期:2005-03-15 09:15:43ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44凯迪拉克
日期:2013-12-27 09:30:49
13#
 楼主| 发表于 2006-8-30 10:31 | 只看该作者
不清楚为什么在不同的数据库中,rbo的执行计划不同

在这个例子中,数据量的不同导致了rbo决定的执行计划的不同,真是奇怪

使用道具 举报

回复
论坛徽章:
12
授权会员
日期:2005-10-30 17:05:33ITPUB十周年纪念徽章
日期:2011-11-01 16:20:282011新春纪念徽章
日期:2011-02-18 11:43:332010新春纪念徽章
日期:2010-03-01 11:19:59BLOG每日发帖之星
日期:2009-01-27 01:01:05BLOG每日发帖之星
日期:2009-01-23 01:01:092008新春纪念徽章
日期:2008-02-13 12:43:03生肖徽章2007版:鸡
日期:2008-01-02 17:35:53会员2007贡献徽章
日期:2007-09-26 18:42:10ITPUB元老
日期:2007-05-09 17:56:18
14#
发表于 2006-8-30 13:23 | 只看该作者
作个explain plan不就全明白了,用的着猜那么累么

使用道具 举报

回复
论坛徽章:
5
ITPUB元老
日期:2005-03-15 09:15:43ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44凯迪拉克
日期:2013-12-27 09:30:49
15#
 楼主| 发表于 2006-8-30 13:56 | 只看该作者
做了无数个explain plan。
只是不明白,为什么数据量的不同导致了rbo决定的执行计划的不同

使用道具 举报

回复
论坛徽章:
131
2006年度最佳技术回答
日期:2007-01-24 12:58:48福特
日期:2013-10-24 13:57:422014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上加薪
日期:2014-02-19 11:55:142013年新春福章
日期:2013-02-25 14:51:24
16#
发表于 2006-8-30 20:54 | 只看该作者
两个问题
1。为什么 table 没有analyze 也走CBO
如果使用partition table , index organized table , parallel > 1 的table 的话,就算不analyzed , Oracle也会强制使用 CBO.

使用道具 举报

回复
论坛徽章:
131
2006年度最佳技术回答
日期:2007-01-24 12:58:48福特
日期:2013-10-24 13:57:422014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上加薪
日期:2014-02-19 11:55:142013年新春福章
日期:2013-02-25 14:51:24
17#
发表于 2006-8-30 20:56 | 只看该作者
2。数据量不同,没analyze 也会选择Full Table Scan/ Index Scan

这是由于Oracle 在作CBO时,有时候会利用 Sample Scan 来 检查Table 的数据,所以,就算没有analyze ,CBO 也有可能知道你的大概数据量

使用道具 举报

回复
论坛徽章:
131
2006年度最佳技术回答
日期:2007-01-24 12:58:48福特
日期:2013-10-24 13:57:422014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上加薪
日期:2014-02-19 11:55:142013年新春福章
日期:2013-02-25 14:51:24
18#
发表于 2006-8-30 20:58 | 只看该作者
用10053 event 可以看到一些……

使用道具 举报

回复
论坛徽章:
9
数据库板块每日发贴之星
日期:2006-09-06 01:01:55数据库板块每日发贴之星
日期:2006-09-07 01:02:41数据库板块每日发贴之星
日期:2006-09-23 01:02:09数据库板块每日发贴之星
日期:2006-09-26 01:03:58数据库板块每日发贴之星
日期:2006-10-06 01:02:42数据库板块每日发贴之星
日期:2006-10-08 01:02:15数据库板块每日发贴之星
日期:2006-10-09 01:02:43授权会员
日期:2006-12-23 10:14:58会员2007贡献徽章
日期:2007-09-26 18:42:10
19#
发表于 2006-8-31 10:13 | 只看该作者
rollingpig 版主,你很帅哦,你老婆也很漂亮,祝福你们!

使用道具 举报

回复
论坛徽章:
5
ITPUB元老
日期:2005-03-15 09:15:43ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44凯迪拉克
日期:2013-12-27 09:30:49
20#
 楼主| 发表于 2006-8-31 10:37 | 只看该作者
那个分区表是没有用并行的,这个可以确定。
建表语句中有noparallel

使用道具 举报

回复

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

本版积分规则 发表回复

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