oralce数据库调优

oracle数据库调优培训备注:

1:

oracle在执行sql语句时,采用何种优化方式优化由参数 optimizer_mode 来决定。

参数查看及设置

查看:show parameter optimizer_mode

设置:1:session级别通过alter session set optimizer_mode=all_rows
         2:instance级别我们可以通过在initSID.ora中设置optimizer_mode=all_rows

2:oracle块,盘区,段

数据块(block) : 是oracle的存储单位,也叫逻辑块,oracle块,是物理磁盘的一个空间。

区(extent):一组数据块构成一个区

段(Segment):

由一组区构成,被分配到一个特定的数据结构中,段只能存储于一个表空间中,不能跨表空间存储哦。

                         

另一种解释:每个表在表空间中都留有一块单独的磁盘空间区域,成为段。每一个段依次在表空间中   留 有一块初始的磁

盘空间区域,成为初始扩展区(initial  extent)。当段使用完了这个空间,磁盘的 空间的另一个单独区域的下一扩展区

(next extent)将被启用。如果这一块区域也使用完,那么还会有另外一个扩展区被启用。这个过程会随着每一个表持续

执行,知道整个表空间充满为止。此时,在表继续增长之前,必须为比哦啊空间添加一个新的数据文件,或者扩展表空间文

件。
 

3:oracle优化器 :分析sql,找到sql在oracle中的最佳执行路径。

4:oracle优化方式:

    rule:RBO(基于规则的)及查询过来,表默认先找索引。

    choose:oracle默认选择这种方式。有统计分析的表会选择CBO,没有就选择RBO

    first  rows:CBO 一个数据块中有几行,就先返回几行。

    ALL  ROWS:CBO。

5:关于oracle共享池参考文章http://www.oracle.com.cn/viewthread.php?tid=90671

   

    当sql在oracle数据库执行,将执行下列步骤。

  

    1)语法检查   检查sql语句拼写是否正确及词序。

    2)检查所有的与数据字典不一致的表和列的名字。

    3)轮廓存储检查。

       检查数据字典,以确定该sql语句的轮廓是否已经存在。

       在SQA系统全局区中有一块sql共享池(缓存)

       sql第一次执行时会保存到共享池中。

       第二次执行时,如果它和之前执行的语句相同时,oracle很快获得已经被解析的语句及最好的执行路径。

       静态sql不能缓存。绑定变量才可以。java  preparestatement

      (此时会跳过步骤一和步骤二)

    4)生成执行计划(基于成本的优化规则和数据字典中的统计表)

    5)建立二进制代码

6:给表建立索引,只有执行统计之后,索引才能被使用到。

 

猜你喜欢

转载自salouhim.iteye.com/blog/1344862