`
Acmey
  • 浏览: 55528 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

Oracle优化器以及SQL共享

    博客分类:
  • DB
 
阅读更多

  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;

  不能共享
分享到:
评论

相关推荐

    ORACLE SQL性能优化系列

    因此,当你执行一个 SQL 语句(有时被称为一个游标)时,如果它和之前的执行过的语句完全相同,ORACLE 就能很快获得已经被解析的语句以及最好的执行路径。ORACLE 的这个功能大大地提高了 SQL 的执行性能并节省了内存...

    ORACLE-SQL性能优化大全.pdf

    - **SQL共享原理**: - **共享池**:Oracle在内存中有一个共享池,用于存储已经解析过的SQL语句及其执行计划。 - **共享条件**:为了实现SQL语句的共享,需要满足三个条件: - 语句必须完全相同(包括大小写、...

    ORACLESQL性能优化.pptx

    通过对 SQL 语句执行的过程、Oracle 优化器、表之间的关联、如何得到 SQL 执行计划、如何分析执行计划等内容的讨论,可以逐步掌握 SQL 优化的过程。 在 SQL 优化过程中,需要了解性能管理、性能问题、调整的方法、...

    ORACLE_SQL性能优化(全).ppt

    Oracle优化器** Oracle的优化器负责选择执行计划,常见的有基于规则的优化器(RBO)和成本基优化器(CBO)。CBO通常更先进,根据统计信息计算成本来选择最佳执行路径。 **8. 执行计划分析** 分析执行计划可以帮助...

    oracle之SQL优化

    本篇文章将深入探讨Oracle中的SQL优化技术,包括理解执行计划、索引优化、连接优化、子查询优化、缓存策略以及SQL调优工具的使用。 1. **理解执行计划** - **执行计划**:在Oracle中,每一条SQL语句都会有一个执行...

    oracle_sql性能优化 文档

    总的来说,Oracle SQL性能优化是一个涉及多个层面的综合任务,包括选择合适的优化策略、优化数据访问方式以及充分利用SQL共享机制。理解并掌握这些知识,可以帮助数据库管理员和开发人员构建高效、稳定的Oracle...

    oracle-sql优化

    SQL优化涉及多个方面,包括理解SQL语句的处理过程、Oracle优化器的工作原理、执行计划的获取与分析等。 1. **优化基础知识**:性能管理是关键,需要在系统开发初期就开始考虑,并设立明确的性能目标。调整过程中...

    老方块ORACLE SQL性能优化(全)教学PPT

    性能管理 性能问题 调整的方法 SQL优化机制 应用的调整 SQL语句的处理过程 共享SQL区域 SQL语句处理的阶段 共享游标 SQL编码标准 Oracle 优化器介绍 SQL Tunning Tips 优化Tools

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

    在实际应用中,理解并掌握如何选择和配置优化器、优化索引策略、以及充分利用SQL语句共享,对于提升Oracle数据库的性能至关重要。正确的优化器设置和有效的索引管理能够显著减少查询时间,提高系统整体性能,使得...

    oracle_sql性能优化.pdf

    通过合适的优化器选择、合理的表访问方式以及高效的SQL语句共享,可以显著提升Oracle SQL的性能。需要注意的是,优化工作应该基于实际的业务需求和服务器资源情况来进行,而不是盲目套用规则。每个数据库环境都是...

    大道相通,得鱼忘筌 - 从Oracle的SQL优化到MySQL的SQL优化.pdf

    接下来,我们将探讨Oracle和MySQL在SQL优化方面的共性和差异性,以及这些知识如何帮助数据库管理员(DBA)在不同环境中实施有效的SQL优化。 首先,我们要明确两个数据库系统的基本架构。Oracle数据库是一个功能强大...

    ORACLE-SQL优化

    在优化SQL语句执行过程时,了解ORACLE优化器的工作机制,表之间的关联方式,以及如何获取和分析SQL执行计划是至关重要的。以下,我们将详细介绍ORACLE-SQL优化的关键知识点: 一、优化基础知识概述 优化基础知识...

    Oracle性能优化方法(SQL篇)

    1. **SQL查询优化**:SQL查询是数据库操作的基础,优化SQL语句可以显著提升性能。这包括了避免全表扫描,使用索引,减少子查询,以及正确使用连接方式(如INNER JOIN, LEFT JOIN等)。理解并运用EXPLAIN PLAN可以...

    ORACLE 19C SQL调优指南 中文版 Oracle DBA

    Oracle 19C SQL调优是数据库管理员(DBA)日常工作中不可或缺的一部分,它涉及到优化SQL查询性能,提高数据库系统的整体效率。本指南针对Oracle 19C版本,提供了丰富的调优策略和技术,旨在帮助DBA们更好地管理和维护...

    oracle sql优化100条

    ### Oracle SQL优化100条概览 在Oracle数据库管理与优化领域,SQL查询的效率直接关系到系统性能和用户体验。以下将详细解读部分Oracle SQL优化原则,涵盖查询执行计划、表扫描方式、SQL语句优化及数据访问顺序等...

    Oracle+SQL性能优化40条.docx

    Oracle SQL 性能优化 40 条 以下是 Oracle SQL 性能优化 40 条的知识点总结: 一、SQL 语句执行步骤 * 语法分析:检查 SQL 语句的语法正确性 * 语义分析:分析 SQL 语句的逻辑含义 * 视图转换:将 SQL 语句转换为...

    ORACLE SQL性能优化规范

    3. 选用适合的ORACLE优化器: Oracle数据库提供CBO(成本基础优化器)和RBO(规则基础优化器)两种优化器。CBO基于统计信息和成本计算最佳执行路径,而RBO则根据预定义的规则选择执行计划。根据查询的复杂性和数据...

    oracle培训sql性能优化ppt

    【Oracle SQL性能优化】是数据库管理员和开发人员关注的核心议题,尤其在大型企业级应用中,高效的SQL查询对于系统的响应时间和并发性至关重要。本PPT深入探讨了Oracle SQL优化的各种方面,旨在帮助读者理解SQL执行...

    ORACLE SQL性能优化系列(全)

    1. **选用适合的ORACLE优化器** Oracle提供三种优化器:Rule(基于规则)、Cost(基于成本)和Choose(选择性)。默认情况下,Oracle采用Choose优化器,它会根据对象统计信息来决定是基于规则还是基于成本。基于...

Global site tag (gtag.js) - Google Analytics