Oracle是世界领先的信息管理软件开发商,因其复杂的关系数据库产品而闻名。本文介绍Oracle优化器,它是一个非常好用的工具。Oracle在执行一个SQL之前,首先要分析一下语句的执行计划,然后再按执行计划去执行。分析语句的执行计划的工作是由优化器(Optimizer)来完成的。
不同的情况,一条SQL可能有多种执行计划,但在某一时点,一定只有一种执行计划是最优的,花费时间是最少的。相信你一定会用Pl/sql
Developer、Toad等工具去看一个语句的执行计划,不过你可能对Rule、Choose、First rows、All
rows这几项有疑问,因为我当初也是这样的,那时我也疑惑为什么选了以上的不同的项,执行计划就变了?
1.Oracle优化器的优化方式
Oracle优化器共有两种的优化方式,即基于规则的优化方式(Rule-Based
Optimization简称为RBO)和基于代价的优化方式(Cost-Based Optimization简称为CBO)。
A、RBO方式:优化器在分析SQL语句时,所遵循的是Oracle内部预定的一些规则。比如我们常见的,当一个where子句中的一列有索引时去走索引。
B、CBO方式:依词义可知,它是看语句的代价(Cost)了,这里的代价主要指Cpu和内存。优化器在判断是否用这种方式时,主要参照的是表及索引的统计信息。统计信息给出表的大小、有少行、每行的长度等信息。这些统计信息起初在库内是没有的是你在做analyze后才出现的,很多的时侯过期统计信息会令优化器做出一个错误的执行计划,因些我们应及时更新这些信息。在Oracle8及以后的版本,Oracle列推荐用CBO的方式。
我们要明了,不一定走索引就是优的,比如一个表只有两行数据,一次IO就可以完成全表的检索,而此时走索引时则需要两次IO,这时对这个表做全表扫描(full
table scan)是最好的。
2.Oracle优化器的优化模式(Optermizer Mode)
优化模式包括Rule,Choose,First rows,All rows这四种方式,也就是我们以上所提及的。如下我解释一下:
Rule:不用多说,即走基于规则的方式。
Choolse:这是我们应观注的,默认的情况下Oracle用的便是这种方式。指的是当一个表或或索引有统计信息,则走CBO的方式,如果表或索引没统计信息,表又不是特别的小,而且相应的列有索引时,那么就走索引,走RBO的方式。
First
Rows:它与Choose方式是类似的,所不同的是当一个表有统计信息时,它将是以最快的方式返回查询的最先的几行,从总体上减少了响应时间。
All
Rows:也就是我们所说的Cost的方式,当一个表有统计信息时,它将以最快的方式返回表的所有的行,从总体上提高查询的吞吐量。没有统计信息则走基于规则的方式。
3.如何设定选用哪种优化模式
A、Instance级别
我们可以通过在init.ora文件中设定OPTIMIZER_MODE=RULE、OPTIMIZER_MODE=CHOOSE、OPTIMIZER_MODE=FIRST_ROWS、OPTIMIZER_MODE=ALL_ROWS去选用3所提的四种方式,如果你没设定OPTIMIZER_MODE参数则默认用的是Choose这种方式。
B、Sessions级别
通过SQL> ALTER SESSION SET OPTIMIZER_MODE=;来设定。
C、语句级别
这些需要用到Hint
分享到:
相关推荐
Oracle数据库优化是一门深入的技术领域,它关系到数据库性能的提升和资源的高效利用。本文针对Oracle数据库的优化提供了详尽的指导和案例分析,尤其强调了在CBO(Cost-Based Optimizer,基于成本的优化器)模式下的...
作者会详细讲解SQL执行计划、查询优化器的工作方式,以及如何通过调整SQL语句、创建合适的索引、使用绑定变量等方式提升查询速度。同时,书中还会涵盖如何使用Oracle的性能分析工具,如Explain Plan、Trace和AWR报告...
《ORACLE数据库设计与优化》 Oracle数据库是全球广泛使用的大型关系型数据库系统之一,它在数据存储、处理和管理方面具有强大的功能。本主题主要探讨Oracle数据库的设计原则和优化策略,以提升系统的性能和效率。 ...
Oracle数据库性能优化是确保系统高效运行的关键环节,尤其是在大数据量和高并发的环境中。Oracle数据库因其先进、完整和集成的特性,在市场中占据主导地位,因此深入理解和掌握Oracle的优化技术至关重要。 首先,...
"Oracle数据库优化之数据库磁盘IO" Oracle数据库优化之数据库磁盘IO是指数据库管理员和开发者对Oracle数据库进行优化,以提高数据库的性能和稳定性。数据库磁盘IO是影响数据库性能的重要因素之一,因此优化数据库...
ORACLE的优化器共有3种: a. RULE (基于规则) b. COST (基于成本) c. CHOOSE (选择性) 设置缺省的优化器,可以通过对init.ora文件中OPTIMIZER_MODE参数的各种声明,如RULE,COST,CHOOSE,ALL_ROWS,FIRST_ROWS . 你...
总的来说,Oracle数据库优化是一个综合性的过程,涉及到对SQL语法的理解、优化器的工作机制、数据库设计和管理等多个层面。通过深入学习和实践,我们可以更有效地管理和提升Oracle数据库的性能,满足业务需求。
oracle数据库优化内容: 1.Oracle数据库优化概述 2.性能规划器的使用 3.顶层会话的使用 4.Oracle专家的使用 5.索引调节向导 6.SQL分析的使用 7.锁管理器 8.性能管理员 9.表空间的重组 博文链接:...
Oracle数据库优化是一项系统工程,涉及程序设计、操作系统优化、硬件配置、数据库配置以及SQL语句等多个层面。为了提高Oracle数据库的性能,需要对这些层面进行综合考虑,逐一优化。 首先,硬件优化是基础,主要...
Oracle数据库优化是一个复杂而关键的领域,涉及到许多层面,包括SQL查询优化、索引策略、内存结构调整、数据库架构设计以及硬件配置等。以下将详细阐述这些知识点。 首先,SQL查询优化是数据库优化的核心部分。...
ORACLE数据库参数优化与分析 ORACLE数据库参数优化与分析 ORACLE数据库参数优化与分析 ORACLE数据库参数优化与分析 ORACLE数据库参数优化与分析 ORACLE数据库参数优化与分析
在基于规则的优化器中,ORACLE 的解析器按照从右到左的顺序处理 FROM 子句中的表名。FROM 子句中写在最后的表(基础表 driving table)将被最先处理。在 FROM 子句中包含多个表的情况下,你必须选择记录条数最少的表...
Oracle 数据库优化技术详解 Oracle 数据库优化技术是数据库性能优化的重要组成部分,旨在提高数据库的运行效率、可靠性和可扩展性。 Oracle 数据库优化技术涉及到多方面的内容,包括数据库结构优化、SQL 优化、索引...
本文将深入探讨Oracle数据库优化技术及其故障处理策略。 一、Oracle性能优化 1. SQL优化:SQL查询是数据库性能的关键。优化SQL语句可以通过分析执行计划、使用索引、避免全表扫描、减少笛卡尔积等方式提高执行效率...
Oracle数据库优化是一个复杂而重要的主题,它涉及到许多层面,包括SQL查询优化、索引策略、内存管理、存储优化以及数据库架构调整。以下是对这些关键领域的详细介绍: 1. **SQL查询优化**:SQL是数据库操作的核心,...
Oracle数据库作为企业级信息管理系统的重要支撑平台,其查询优化方法尤为关键。本文重点分析Oracle数据库索引及临时表在查询中的应用,并探讨了基于索引使用SQL语句进行数据库效率优化的几种实现方法。 在Oracle...
"Oracle数据库优化方案.pdf" 在这篇文章中,我们将讨论Oracle数据库优化方案,包括内存等参数配置的优化、减少物理读写的优化、批量重复操作的SQL语句及大表操作的优化等。同时,我们还将讨论Oracle数据库优化的...
Oracle 数据库索引优化方法探析 Oracle 数据库索引优化方法探析是指通过对 Oracle 数据库索引的分析和优化,以提高数据库的查询效率和性能。 Oracle 数据库索引是一种数据结构,用于快速访问数据库表的特定信息。...
本文将详细介绍一种全面的Oracle数据库优化方案,涵盖监控、磁盘I/O优化、回滚段优化、Redo日志优化、系统全局区(SGA)优化等多个方面。 #### 二、监控数据库性能 监控是优化的基础。为了准确了解Oracle数据库的...