内家菜鸟吧 关注:4贴子:246
  • 3回复贴,共1

ORACLE性能优化学习帖

只看楼主收藏回复

强势留名


IP属地:广东1楼2014-07-24 14:40回复
    基于成本优化器的CHOOSE模式的学习
    CHOOSE
    仅在9i及之前版本中被支持,10g已经废除。8i及9i中为默认值。
    这个值表示SQL语句既可以使用RBO优化器也可以使用CBO优化器,而决定该SQL到底使用哪个优化器的唯一因素是,所访问的对象是否存在统计信息。如果所访问的全部对象都存在统计信息,则使用CBO优化器优化SQL;如果只有部分对象存在统计信息,也仍然使用CBO优化器优化SQL,优化器会为不存在统计信息对象依据一些内在信息(如分配给该对象的数据块)来生成统计信息,只是这样生成的统计信息可能不准确,而导致产生不理想的执行计划;如果全部对象都无统计信息,则使用RBO来优化该SQL语句。
    RULE
    仅在9i及之前版本中被支持,10g已经废除。
    不论是否存在统计信息,都将使用RBO优化器来优化SQL。
    -------------------------------------------------------------------------
    ALL_ROWS
    在10g中为默认值。
    不论是否存在统计信息,都使用CBO优化器,且把CBO的优化目标设定为“最小的成本”。
    FIRST_ROWS
    CBO尽可能快速的返回结果集的前面少数行记录。
    不论是否存在统计信息,都使用CBO优化器,FIRST_ROWS导致CBO使用“试探法”来产生执行计划,这种方式其成本可能会稍大一些。
    -------------------------------------------------------------------------------------------
    FIRST_ROWS_n
    不论是否存在统计信息,都使用CBO优化器,并以最快的速度返回前n行记录,n可以是1,10,100,1000。


    IP属地:广东2楼2014-07-24 14:50
    回复
      第1章 引起数据库性能问题的因素
      软件设计:软件系统架构、软件代码
      硬件设计:存储结构、硬件性能
      数据库设计:数据库类型、数据库对象
      如果是OLAP系统,运行报表作业的时间比较多,那么优化器模式设置为ALL-ROWS是恰当的
      如果分页比较多的网站类数据库,设置为first-rows会更好一些
      大概考虑的方向:
      1、弄清楚系统的数据库类型,OLAP还是OLTP
      2、系统的并发量。
      3、SQL代码的编写
      4、数据库的设计
      5、存储的设计


      IP属地:广东3楼2014-07-24 14:58
      回复
        第2章 锁与阻塞
        很多人学了无数年的经济,却比不上一个几乎没有读过书的人懂得做生意,因为前者在茫无目的的机械的学,后者为了生存下去而不断的思考,这就是区别。
        查看锁的视图:V$LOCK
        select sid,type,id1,id2,lmode,request,block from v$lock where sid in (157,1
        58) order by sid;
        确定锁后,可以通过v$session来确定锁用户的信息
        select machine from v$session where sid in (158,157);
        可能引起阻塞的原因:
        1、select for update
        外键字段加上索引,可以极大提高性能。特别在删除的是否,删除1000条,就要扫描从表1000次


        IP属地:广东4楼2014-07-24 15:13
        回复