`
maosheng
  • 浏览: 560326 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Oracle 优化器介绍

阅读更多
2种类型的优化器:基于规则的优化器与基于代价的优化器。

基于规则的优化器 -- Rule Based Optimization(简称RBO):
   基于规则的优化器中采用启发式的方法(Heuristic Approach)或规则(Rules)来生成执行计划。例如,如果一个查询的where条件(where clause)包含一个谓词(predicate,其实就是一个判断条件,如”=”, “>”, ”<”等),而且该谓词上引用的列上有有效索引,那么优化器将使用索引访问这个表;而不考虑其它因素,如:表中数据的多少、表中数据的易变性、索引的可选择性等。此时数据库中没有关于表与索引数据的统计性描述,如:表中有多少行,每行的可选择性等。优化器也不考虑实例参数,如:multi block i/o、可用排序内存的大小等,所以优化器有时就选择了次优化的计划作为真正的执行计划,导致系统性能不高。

基于代价的优化器 -- Cost Based Optimization(简称CBO):
   Oracle把一个代价引擎(Cost Engine)集成到数据库内核中,用来估计每个执行计划需要的代价,该代价将每个执行计划所耗费的资源进行量化,从而CBO可以根据这个代价选择出最优的执行计划。

   查询耗费的资源可以被分成3个基本组成部分:I/O代价、CPU代价、network代价。
   I/O代价是将数据从磁盘读入内存所需的代价。访问数据包括将数据文件中数据块的内容读入到SGA的数据高速缓存中,在一般情况下,该代价是处理一个查询所需要的最主要代价,所以我们在优化时,一个基本原则就是降低查询所产生的I/O总次数。
   CPU代价是处理在内存中数据所需要的代价,如一旦数据被读入内存,则我们在识别出我们需要的数据后,在这些数据上执行排序(sort)或连接(join)操作,这需要耗费CPU资源。
   对于需要访问跨节点(即通常说的服务器)数据库上数据的查询来说,存在network代价,用来量化传输操作耗费的资源。查询远程表的查询或执行分布式连接的查询会在network代价方面花费比较大。

判断当前数据库使用何种优化器:
由optimizer_mode初始化参数决定的。该参数可能的取值为:first_rows_[1 | 10 | 100 | 1000] | first_rows | all_rows | choose | rule。
具体解释如下:
   RULE为使用RBO优化器。
   CHOOSE则是根据实际情况,如果数据字典中包含被引用的表的统计数据,即引用的对象已经被分析,则就使用CBO优化器,否则为RBO优化器。
   ALL_ROWS为CBO优化器使用的第一种具体的优化方法,是以数据的吞吐量为主要目标,以便可以使用最少的资源完成语句。
   FIRST_ROWS为优化器使用的第二种具体的优化方法,是以数据的响应时间为主要目标,以便快速查询出开始的几行数据。
   FIRST_ROWS_[1 | 10 | 100 | 1000] 为优化器使用的第三种具体的优化方法,让优化器选择一个能够把响应时间减到最小的查询执行计划,以迅速产生查询结果的前 n 行。该参数为ORACLE 9I新引入的。

分享到:
评论

相关推荐

    Oracle优化器介绍

    Oracle 优化器介绍 Oracle 优化器是 Oracle 数据库中的一种核心组件,负责生成执行计划,以提高 SQL 语句的执行效率。 Oracle 优化器可以分为两大类:基于规则的优化器(RBO)和基于成本的优化器(CBO)。 基于...

    oracle 优化器介绍

    Oracle 优化器是数据库管理系统中的一个关键组件,它在Oracle数据库中扮演着至关重要的角色,负责确定执行SQL查询的最佳方式。Oracle 优化器通过分析多种可能的执行计划,选择最有效率的一种来运行查询,从而确保...

    Oracle优化器介绍(精简完善版).doc

    ### Oracle优化器深入解析 #### Oracle优化器概览 Oracle数据库优化器负责分析SQL语句并确定执行查询的最有效方式。它通过考虑多种因素,包括表和索引的统计数据,来选择最佳的执行计划。Oracle优化器经历了从基于...

    oracle9i优化器介绍

    ### Oracle9i优化器深入解析 #### 一、优化器目标的选择 在Oracle9i数据库系统中,优化器的目标选择至关重要,它直接影响着查询的执行效率。优化器目标主要分为两类:最佳吞吐量(All_Rows)和最快响应速度(First...

    Oracle优化Oracle优化

    Oracle优化器通常会根据表大小和其他因素自动选择最优的连接顺序。然而,在某些情况下,手动调整FROM子句中的表顺序可能会带来显著的性能提升。 例如,假设有一个查询涉及到两个表TAB1(16,384行)和TAB2(1行),...

    Oracle优化器案例与原理分析(盖国强)

    Oracle优化器是Oracle数据库中一个重要的组件,负责在数据库执行SQL查询时,选择最有效的执行计划。理解Oracle优化器的工作原理和案例对于数据库管理员来说至关重要,可以帮助他们调整和优化SQL执行,从而提高数据库...

    Oracle9i优化器介绍

    下面将对Oracle9i优化器进行详细的介绍。 1. 优化器类型: Oracle9i包含两种主要的优化器:成本基于(Cost-Based Optimizer, CBO)和规则基于(Rule-Based Optimizer, RBO)。CBO是默认的优化器,它通过估算不同...

    如何选择Oracle优化器使你事半功倍

    Oracle数据库的优化器是其核心性能提升的关键组件,它的主要任务是确定执行SQL查询的最佳路径。优化器有三种类型:RULE、COST和CHOOSE,它们各有特点。 1. RULE优化器是基于预定义的规则来决定执行计划,简单且易于...

    Oracle的优化器(Optimizer)

    #### 一、Oracle优化器概述 在Oracle数据库中,每当执行SQL语句时,系统首先需要确定最佳的执行路径或计划,这一过程由**优化器(Optimizer)**负责。优化器的主要任务是评估SQL语句的不同执行计划,并从中选择一个最...

    Oracle优化常用概念.pptx

    Oracle 优化器是 Oracle 数据库管理系统中一个核心组件,负责根据用户提交的 SQL 语句生成最优的执行计划,以提高查询效率。以下是 Oracle 优化器中的一些常用概念: CBO/RBO Oracle 优化器有两种模式:CBO...

    基于成本的ORACLE优化法则 英文原版

    《基于成本的Oracle优化法则》是数据库专家Jonathan Lewis的一部经典著作,该书深入探讨了Oracle数据库的性能优化策略,特别是在成本基础优化方面。Oracle数据库是全球广泛使用的大型企业级数据库系统,其性能优化...

    Oracle优化打包下载

    优化笔记 sql性能的调整-总结 SQL代码性能优化 Oracle语句优化53个规则详解 ORACLE9i优化设计与系统调整 oracle9i优化器介绍 oracle9i的查询优化 ……

    oracle优化教程

    综上所述,这个Oracle优化教程涵盖了从基础到高级的优化技术,通过深入学习,不仅可以理解优化器的工作机制,还能掌握调整数据库性能的各种策略,这对于提高系统整体性能,确保服务的稳定性和响应速度具有重大意义。...

    基于成本的oracle优化法则中文版.rar

    "基于成本的Oracle优化法则"是一个重要的概念,它涉及到Oracle数据库查询优化器的工作原理。在这个主题中,我们将深入探讨这一法则,理解其背后的机制,并学习如何利用这些知识来提升数据库性能。 1. **基于成本的...

    SQL性能调优(全) ORACLE

    * Oracle优化器介绍 * SQL Tunning Tips * 优化Tools 二、性能调整综述 * 80/20定律 * 系统响应时间和并发性 * 造成SQL语句性能不佳的原因:开发人员只关注查询结果的正确性,忽视查询语句的效率;开发人员只关注...

Global site tag (gtag.js) - Google Analytics