ITPUB??ì3
2010数据库技术大会
ITPUB论坛 » Oracle数据库管理 » outline 问题


您有 2 条公共消息
  • 来自: 公共消息 标题: ITPUB邮箱已经恢复 内容: ITPUB邮箱用户请注意,邮箱现在已经恢复 web访问地址 http://emai ...
  • 来自: 公共消息 标题: 3-5月ITPUB数据库 ... 内容: ITPUB与3月和5月分别安排了Oracle 11g DBA和Oracle性能优化培训,以及 ...

    标题: outline 问题
    离线 mascot7
    要有耐心


    精华贴数 0
    个人空间 0
    技术积分 89 (21526)
    社区积分 540 (1717)
    注册日期 2008-3-12
    论坛徽章:6
    2010年世界杯参赛球队:丹麦2010新春纪念徽章2010年世界杯参赛球队:斯洛文尼亚2010年世界杯参赛球队:丹麦2010年世界杯参赛球队:斯洛文尼亚2010新春纪念徽章
          

    发表于 2008-8-29 17:11 
    outline 问题

    SQL>  create outline ol_t1 for category cc on select count(*) from t1;
    Outline created.
    SQL> select count(*) from t1;
      COUNT(*)
    ----------
        314496

    Execution Plan
    ----------------------------------------------------------
    Plan hash value: 3693069535
    -------------------------------------------------------------------
    | Id  | Operation          | Name | Rows  | Cost (%CPU)| Time     |
    -------------------------------------------------------------------
    |   0 | SELECT STATEMENT   |      |     1 |   912   (1)| 00:00:11 |
    |   1 |  SORT AGGREGATE    |      |     1 |            |          |
    |   2 |   TABLE ACCESS FULL| T1   |   314K|   912   (1)| 00:00:11 |
    -------------------------------------------------------------------
    Note
    -----
       - outline "OL_T1" used for this statement

    Statistics
    ----------------------------------------------------------
             34  recursive calls
            147  db block gets
           4151  consistent gets
              0  physical reads
            576  redo size
            517  bytes sent via SQL*Net to client
            492  bytes received via SQL*Net from client
              2  SQL*Net roundtrips to/from client
              2  sorts (memory)
              0  sorts (disk)
              1  rows processed
    SQL> create index ind_t1 on t1(object_id);
    Index created.
    SQL> alter session set use_stored_outlines=cc;
    Session altered.
    SQL> select count(*) from t1;
      COUNT(*)
    ----------
        314496

    Execution Plan
    ----------------------------------------------------------
    Plan hash value: 2450975207
    ------------------------------------------------------------------------
    | Id  | Operation             | Name   | Rows  | Cost (%CPU)| Time     |
    ------------------------------------------------------------------------
    |   0 | SELECT STATEMENT      |        |     1 |   159   (3)| 00:00:02 |
    |   1 |  SORT AGGREGATE       |        |     1 |            |          |
    |   2 |   INDEX FAST FULL SCAN| IND_T1 |   314K|   159   (3)| 00:00:02 |
    ------------------------------------------------------------------------
    Note
    -----
       - outline "OL_T1" used for this statement

    Statistics
    ----------------------------------------------------------
              1  recursive calls
              0  db block gets
            709  consistent gets
            702  physical reads
              0  redo size
            517  bytes sent via SQL*Net to client
            492  bytes received via SQL*Net from client
              2  SQL*Net roundtrips to/from client
              0  sorts (memory)
              0  sorts (disk)
              1  rows processed


    请问为啥2次执行用的一个Outline ,执行计划确不同呢?而且从outln.ol$hints看,ol_t1就是全表扫描,为啥第二次就走了索引呢?

    SQL> L
      1* select OL_NAME,CATEGORY, HINT_TEXT from outln.ol$hints where ol_name='OL_T1'
    SQL> /
    OL_NAME    CATEGORY   HINT_TEXT
    ---------- ---------- ----------------------------------------------------------------------
    OL_T1      CC         FULL(@"SEL$1" [email=]"T1"@"SEL$1[/email]")
    OL_T1      CC         OUTLINE_LEAF(@"SEL$1")
    OL_T1      CC         ALL_ROWS
    OL_T1      CC         OPT_PARAM('optimizer_dynamic_sampling' 0)
    OL_T1      CC         OPTIMIZER_FEATURES_ENABLE('10.2.0.4')
    OL_T1      CC         IGNORE_OPTIM_EMBEDDED_HINTS


    __________________
    第一是耐心
    第二是耐心
    第三是耐心
    ..........
    ..........
    ..........
    最后还是耐心
    只看该作者    顶部
    离线 sqlanywhere
    中级会员


    精华贴数 0
    个人空间 0
    技术积分 1305 (1655)
    社区积分 2 (30343)
    注册日期 2003-7-24
    论坛徽章:8
    ITPUB元老铁扇公主授权会员2010年世界杯参赛球队:塞尔维亚生肖徽章2007版:马2008北京奥运纪念徽章:赛艇
    2008北京奥运纪念徽章:皮划艇激流回旋数据库板块每日发贴之星    

    发表于 2008-8-29 17:18 
    OUTLINE只是希望ORA按你的计划去执行

    但当ORACLE发现现有系统有更有效的路径时,会不按OUTLINE约定的去实现


    __________________
    只看该作者    顶部
    离线 小虫08


    来自 北京
    精华贴数 1
    个人空间 0
    技术积分 5765 (284)
    社区积分 306 (2313)
    注册日期 2008-8-8
    论坛徽章:36
    现任管理团队成员ITPUB长老会成员萤石蓝锆石紫水晶祖母绿
    数据库板块每日发贴之星数据库板块每日发贴之星数据库板块每日发贴之星数据库板块每日发贴之星数据库板块每日发贴之星数据库板块每日发贴之星

    发表于 2008-8-29 17:20 
    学习了


    __________________
    梦想有多远,就能走多远!
    OCP&OCM  考试一群 101435(已满)
    OCP&OCM  考试二群 22090594(已满)
    OCP&OCM  考试三群 10317220
    只看该作者    顶部
    离线 小虫08


    来自 北京
    精华贴数 1
    个人空间 0
    技术积分 5765 (284)
    社区积分 306 (2313)
    注册日期 2008-8-8
    论坛徽章:36
    现任管理团队成员ITPUB长老会成员萤石蓝锆石紫水晶祖母绿
    数据库板块每日发贴之星数据库板块每日发贴之星数据库板块每日发贴之星数据库板块每日发贴之星数据库板块每日发贴之星数据库板块每日发贴之星

    发表于 2008-8-29 17:20 


    QUOTE:
    原帖由 sqlanywhere 于 2008-8-29 17:18 发表
    但当ORACLE发现现有系统有更有效的路径时,会不按OUTLINE约定的去实现

    那OUTLINE的主要作用是啥,不就是固定执行计划吗?


    __________________
    梦想有多远,就能走多远!
    OCP&OCM  考试一群 101435(已满)
    OCP&OCM  考试二群 22090594(已满)
    OCP&OCM  考试三群 10317220
    只看该作者    顶部
    离线 mascot7
    要有耐心


    精华贴数 0
    个人空间 0
    技术积分 89 (21526)
    社区积分 540 (1717)
    注册日期 2008-3-12
    论坛徽章:6
    2010年世界杯参赛球队:丹麦2010新春纪念徽章2010年世界杯参赛球队:斯洛文尼亚2010年世界杯参赛球队:丹麦2010年世界杯参赛球队:斯洛文尼亚2010新春纪念徽章
          

    发表于 2008-8-29 17:25 


    QUOTE:
    原帖由 sqlanywhere 于 2008-8-29 17:18 发表
    但当ORACLE发现现有系统有更有效的路径时,会不按OUTLINE约定的去实现

    are you sure?
    问题是如果oracle认为的执行计划不是很有效,怎么办?


    __________________
    第一是耐心
    第二是耐心
    第三是耐心
    ..........
    ..........
    ..........
    最后还是耐心
    只看该作者    顶部
    离线 Kamus
    版主


    精华贴数 52
    个人空间 400
    技术积分 47987 (18)
    社区积分 3610 (503)
    注册日期 2002-5-26
    论坛徽章:49
    现任管理团队成员2007年度ITPUB最佳技术原创精华ITPUB元老ITPUB北京九华山庄2008年会纪念徽章管理团队2007贡献徽章参与2007年甲骨文全球大会(中国上海)纪念
    ITPUB北京香山2007年会纪念徽章管理团队2006纪念徽章会员2007贡献徽章会员2006贡献徽章蓝色妖姬紫蜘蛛

    发表于 2008-8-29 17:29 


    QUOTE:
    原帖由 sqlanywhere 于 2008-8-29 17:18 发表
    但当ORACLE发现现有系统有更有效的路径时,会不按OUTLINE约定的去实现

    这个不太对。。。

    但是楼主的问题确实挺有趣的,测试一下。


    __________________
    有事情请发Gmail邮箱,站内IM可能不能及时回复。    

    ***Chanel [K]***



    从明天起, 做一个幸福的人  
    喂马, 劈柴, 周游世界  
    从明天起, 关心粮食和蔬菜  
    我有一所房子 面朝大海, 春暖花开
    只看该作者    顶部
    离线 sqlanywhere
    中级会员


    精华贴数 0
    个人空间 0
    技术积分 1305 (1655)
    社区积分 2 (30343)
    注册日期 2003-7-24
    论坛徽章:8
    ITPUB元老铁扇公主授权会员2010年世界杯参赛球队:塞尔维亚生肖徽章2007版:马2008北京奥运纪念徽章:赛艇
    2008北京奥运纪念徽章:皮划艇激流回旋数据库板块每日发贴之星    

    发表于 2008-8-29 17:32 
    OUTLINE应用情况之一

    开发环境与生产环境基本一致,包括硬件,软件,表,用户,等等
    当在开发环境调整为最优的时候,做一个OUTLINE,直接应用到生产里,就不用再考虑tuning了


    __________________
    只看该作者    顶部
    离线 mascot7
    要有耐心


    精华贴数 0
    个人空间 0
    技术积分 89 (21526)
    社区积分 540 (1717)
    注册日期 2008-3-12
    论坛徽章:6
    2010年世界杯参赛球队:丹麦2010新春纪念徽章2010年世界杯参赛球队:斯洛文尼亚2010年世界杯参赛球队:丹麦2010年世界杯参赛球队:斯洛文尼亚2010新春纪念徽章
          

    发表于 2008-8-29 17:33 
    谢版主!

    SQL> show parameter statistics_level

    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    statistics_level                     string      TYPICAL

    SQL> select * from v$version;

    BANNER
    ----------------------------------------------------------------
    Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
    PL/SQL Release 10.2.0.4.0 - Production
    CORE    10.2.0.4.0      Production
    TNS for Solaris: Version 10.2.0.4.0 - Production
    NLSRTL Version 10.2.0.4.0 - Production


    __________________
    第一是耐心
    第二是耐心
    第三是耐心
    ..........
    ..........
    ..........
    最后还是耐心
    只看该作者    顶部
    离线 sqlanywhere
    中级会员


    精华贴数 0
    个人空间 0
    技术积分 1305 (1655)
    社区积分 2 (30343)
    注册日期 2003-7-24
    论坛徽章:8
    ITPUB元老铁扇公主授权会员2010年世界杯参赛球队:塞尔维亚生肖徽章2007版:马2008北京奥运纪念徽章:赛艇
    2008北京奥运纪念徽章:皮划艇激流回旋数据库板块每日发贴之星    

    发表于 2008-8-29 17:55 
    up

    关注......


    __________________
    只看该作者    顶部
    离线 Kamus
    版主


    精华贴数 52
    个人空间 400
    技术积分 47987 (18)
    社区积分 3610 (503)
    注册日期 2002-5-26
    论坛徽章:49
    现任管理团队成员2007年度ITPUB最佳技术原创精华ITPUB元老ITPUB北京九华山庄2008年会纪念徽章管理团队2007贡献徽章参与2007年甲骨文全球大会(中国上海)纪念
    ITPUB北京香山2007年会纪念徽章管理团队2006纪念徽章会员2007贡献徽章会员2006贡献徽章蓝色妖姬紫蜘蛛

    发表于 2008-8-29 19:13 
    这似乎是10.2.0.4的问题,我在10.2.0.1里面测试,一切正常。


    __________________
    有事情请发Gmail邮箱,站内IM可能不能及时回复。    

    ***Chanel [K]***



    从明天起, 做一个幸福的人  
    喂马, 劈柴, 周游世界  
    从明天起, 关心粮食和蔬菜  
    我有一所房子 面朝大海, 春暖花开
    只看该作者    顶部
    相关内容


    CopyRight 1999-2006 itpub.net All Right Reserved.
    北京皓辰网域网络信息技术有限公司. 版权所有
    E-mail:Webmaster@itpub.net
    网站律师 隐私政策 知识产权声明
    京ICP证:060528号 联系我们