• 文字广告位
  • 文字广告位
  • 文字广告位
您现在的位置: 站长手册 >> 数据库 >> ORACLE >> 正文
站内搜索
Google
为什么基于代价的优化器做出错误选择
        ★★★ 【字体:

为什么基于代价的优化器做出错误选择

雅虎收藏夹 百度收藏 Google书签 Yahoo书签 新浪ViVi 搜狐网摘 365Key网摘 天极网摘 diglog 和讯网摘 POCO网摘 YouNote网摘 博拉网 天下图摘 Del.icio.us digg reddit spurl BlinkList blogmarks
人气: 来源:网络 作者:佚名 所属栏目:ORACLE [切换到繁體中文]

基于代价的优化器(CBO)在进行全表扫描时偶尔会作出一些错误的选择,这种情况尤其发生在Oracle7和Oracle8之中。有几种情况会导致这个问题,分别如下所示:最高使用标记(High water mark)太高:当要在一个表中进行大量的删除时,最高使用标记可能会远远高于实际用到的数据块(block)数量。因此,如果依赖于最高使用标记,CBO常常会错误的调用全表扫描。

错误的优化模式:如果OPTIMIZER_MODE被设置为ALL_ROWS或者CHOOSE,那么SQL优化器会更乐于使用全表扫描。如果想进行快速的OLTP优化,必须首先确认已经将OPTIMIZER_MODE设置成FIRST_ROWS。

贫乏的统计:如果表已经显著的增长,并且没有被重新分析以更新统计数据,那么也许会错误的进行全表扫描,因为CBO认为表长还是像未增长之前那么小。

偏斜的索引:如果一个查询中的候选索引存在偏斜值,那么CBO也许会错误的选择全表扫描。例如,考虑一个查找所有满足条件REGION=SOUTHERN的记录的查询。在Region栏中已经有了一个索引,但是只有1%的条目是Southern region的。在缺少列的柱状图的情况下,CBO不知道Southern region有更高的命中率,所以它会选择全表扫描。

  • 上一篇文章:
  • 下一篇文章:
  • 网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    姓 名: *(必填项) ·注册用户·
    Email: QQ号:
    评 分: 1分 2分 3分 4分 5分
    • 您可以发表评论支持你喜欢的文章。
    • 请遵守《互联网电子公告服务管理规定》
    • 请遵守中华人民共和国各项有关法律法规。
    • 严禁发表危害国家安全、政治、黄色淫秽等内容的评论。
    • 评论人需对自己在使用评论过程中的行为承担法律责任。
    • 本站管理员有权保留或删除评论内容。
    • 评论内容只代表个人观点,与本网站立场无关。
    站内文章搜索
    ·最新文章      
    ·热门文章      
    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | | 京ICP备 05004866号 |
    版权所有 2007-2008 站长手册 WWW.ZZSC.ORG 业务联系 zzsc.org#gmail.com