1、oracle的优化器
============================
oracle有三种优化器
RULE
COST
CHOOSE
通过参数OPTIMIZER_MODE来设置优化器的类型,缺省情况下为选择性优化器,既是CHOOSE
SQL> show parameter OPTIMIZER_MODE
NAME TYPE VALUE
------------------------------------ ----------- ------------
optimizer_mode string ALL_ROWS
在该参数的值中可能出现的有
ALL_ROWS
FIRST_ROWS
RULE
COST
CHOOSE
ALL_ROWS:是一种基于成本的优化器,它将选择一种在最短时间内返回所有数据的执行计划
FIRST_ROWS:和ALL_ROWS不同,他将选择一种最快返回结果集第一条记录的执行计划,不论这个执行计划是基于成本的还是基于规则的
<注意>:
在使用CBO时,必须经常使用analyze来对数据库对象进行统计分析以增加数据库中的对象信息的准确性
如果使用的是CHOOSE,选择性的优化器的话,那么实际使用的优化器将和是否使用过analyze命令有关.
如果使用过analyze,将使用CBO模式,反之为RULE模式
默认情况下数据库使用CHOOSE模式的优化器,但为了避免过多的全表扫描,最好尽量避免使用选择模式的优化器
=============================
2、访问表的方式
全表扫描:
采用顺序访问的方式访问每条记录,实际过程中oracle一次读入多个数据块来加快全表扫描
实际数据库中通过参数db_file_multiblock_read_count来控制一次读取的块的数量.对该参数进行合理配置可以优化I/O
SQL> show parameter db_file_multiblock_read_count
NAME TYPE VALUE
------------------------------------ ----------- ---------------
db_file_multiblock_read_count integer 16
---------------------------------
通过ROWID访问
当使用索引的时候,索引通过键值来区分数据,每个键值都对应存储数据的ROWID,最终通过索引对应的ROWID找到数据,达到优化查询的效果
============================
共享sql
为了不重复解析相同的sql语句,在第一次解析后,oracle将sql语句放在library cache中,
当再次执行相同的sql语句时,将直接引用之前的执行计划.
library cache中存放的解析后的sql按照lru规则清空
要实现sql语句的共享,必须满足以下三个条件
--------------------
1、字符级比较
包括语句的
字母大小写
空格
tab键
的使用,必须完全一致
例:
SELECT * FROM EMP;
和
SELECT * from EMP;
将不会得到共享
--------------------
2、两个语句所指的对象必须完全相同
例:
user1有表t1
user2有表t1
两个用户分别建立自己的连接进入数据库,都执行
select * from t1;
因为owner不同,语句将不能共享
---------------------
3、两个语句中必须使用相同名字的帮定变量
select pin , name from people where pin = :blk1.pin;
select pin , name from people where pin = :blk1.pin;
可以共享
select pin , name from people where pin = :blk1.ot_ind;
select pin , name from people where pin = :blk1.ov_ind;
不能共享
分享到:
相关推荐
因此,当你执行一个 SQL 语句(有时被称为一个游标)时,如果它和之前的执行过的语句完全相同,ORACLE 就能很快获得已经被解析的语句以及最好的执行路径。ORACLE 的这个功能大大地提高了 SQL 的执行性能并节省了内存...
- **SQL共享原理**: - **共享池**:Oracle在内存中有一个共享池,用于存储已经解析过的SQL语句及其执行计划。 - **共享条件**:为了实现SQL语句的共享,需要满足三个条件: - 语句必须完全相同(包括大小写、...
通过对 SQL 语句执行的过程、Oracle 优化器、表之间的关联、如何得到 SQL 执行计划、如何分析执行计划等内容的讨论,可以逐步掌握 SQL 优化的过程。 在 SQL 优化过程中,需要了解性能管理、性能问题、调整的方法、...
Oracle优化器** Oracle的优化器负责选择执行计划,常见的有基于规则的优化器(RBO)和成本基优化器(CBO)。CBO通常更先进,根据统计信息计算成本来选择最佳执行路径。 **8. 执行计划分析** 分析执行计划可以帮助...
本篇文章将深入探讨Oracle中的SQL优化技术,包括理解执行计划、索引优化、连接优化、子查询优化、缓存策略以及SQL调优工具的使用。 1. **理解执行计划** - **执行计划**:在Oracle中,每一条SQL语句都会有一个执行...
总的来说,Oracle SQL性能优化是一个涉及多个层面的综合任务,包括选择合适的优化策略、优化数据访问方式以及充分利用SQL共享机制。理解并掌握这些知识,可以帮助数据库管理员和开发人员构建高效、稳定的Oracle...
SQL优化涉及多个方面,包括理解SQL语句的处理过程、Oracle优化器的工作原理、执行计划的获取与分析等。 1. **优化基础知识**:性能管理是关键,需要在系统开发初期就开始考虑,并设立明确的性能目标。调整过程中...
性能管理 性能问题 调整的方法 SQL优化机制 应用的调整 SQL语句的处理过程 共享SQL区域 SQL语句处理的阶段 共享游标 SQL编码标准 Oracle 优化器介绍 SQL Tunning Tips 优化Tools
在实际应用中,理解并掌握如何选择和配置优化器、优化索引策略、以及充分利用SQL语句共享,对于提升Oracle数据库的性能至关重要。正确的优化器设置和有效的索引管理能够显著减少查询时间,提高系统整体性能,使得...
通过合适的优化器选择、合理的表访问方式以及高效的SQL语句共享,可以显著提升Oracle SQL的性能。需要注意的是,优化工作应该基于实际的业务需求和服务器资源情况来进行,而不是盲目套用规则。每个数据库环境都是...
接下来,我们将探讨Oracle和MySQL在SQL优化方面的共性和差异性,以及这些知识如何帮助数据库管理员(DBA)在不同环境中实施有效的SQL优化。 首先,我们要明确两个数据库系统的基本架构。Oracle数据库是一个功能强大...
在优化SQL语句执行过程时,了解ORACLE优化器的工作机制,表之间的关联方式,以及如何获取和分析SQL执行计划是至关重要的。以下,我们将详细介绍ORACLE-SQL优化的关键知识点: 一、优化基础知识概述 优化基础知识...
1. **SQL查询优化**:SQL查询是数据库操作的基础,优化SQL语句可以显著提升性能。这包括了避免全表扫描,使用索引,减少子查询,以及正确使用连接方式(如INNER JOIN, LEFT JOIN等)。理解并运用EXPLAIN PLAN可以...
Oracle 19C SQL调优是数据库管理员(DBA)日常工作中不可或缺的一部分,它涉及到优化SQL查询性能,提高数据库系统的整体效率。本指南针对Oracle 19C版本,提供了丰富的调优策略和技术,旨在帮助DBA们更好地管理和维护...
### Oracle SQL优化100条概览 在Oracle数据库管理与优化领域,SQL查询的效率直接关系到系统性能和用户体验。以下将详细解读部分Oracle SQL优化原则,涵盖查询执行计划、表扫描方式、SQL语句优化及数据访问顺序等...
Oracle SQL 性能优化 40 条 以下是 Oracle SQL 性能优化 40 条的知识点总结: 一、SQL 语句执行步骤 * 语法分析:检查 SQL 语句的语法正确性 * 语义分析:分析 SQL 语句的逻辑含义 * 视图转换:将 SQL 语句转换为...
3. 选用适合的ORACLE优化器: Oracle数据库提供CBO(成本基础优化器)和RBO(规则基础优化器)两种优化器。CBO基于统计信息和成本计算最佳执行路径,而RBO则根据预定义的规则选择执行计划。根据查询的复杂性和数据...
【Oracle SQL性能优化】是数据库管理员和开发人员关注的核心议题,尤其在大型企业级应用中,高效的SQL查询对于系统的响应时间和并发性至关重要。本PPT深入探讨了Oracle SQL优化的各种方面,旨在帮助读者理解SQL执行...
1. **选用适合的ORACLE优化器** Oracle提供三种优化器:Rule(基于规则)、Cost(基于成本)和Choose(选择性)。默认情况下,Oracle采用Choose优化器,它会根据对象统计信息来决定是基于规则还是基于成本。基于...