`

Oracle性能优化技巧-性能调优

阅读更多

 1.选用适合的ORACLE优化器

中国网管联盟www.bitscn.com

 

    ORACLE的优化器共有3种:

中国网管联盟www_bitscn_com

 

    1.RULE(基于规则) 2.COST(基于成本) 3.CHOOSE(选择性) feedom.net

    设置缺省的优化器,可以通过对init.ora文件中OPTIMIZER_MODE参数的各种声明,如RULE,COST,CHOOSE,ALL_ROWS,FIRST_ROWS . 你当然也在SQL句级或是会话(session)级对其进行覆盖。

54com.cn

 

    为了使用基于成本的优化器(CBO, Cost-Based Optimizer) , 你必须经常运行analyze 命令,以增加数据库中的对象统计信息(object statistics)的准确性。

网管网bitsCN.com

 

    如果数据库的优化器模式设置为选择性(CHOOSE),那么实际的优化器模式将和是否运行过analyze命令有关。 如果table已经被analyze过, 优化器模式将自动成为CBO , 反之,数据库将采用RULE形式的优化器。 feedom.net

    在缺省情况下,ORACLE采用CHOOSE优化器, 为了避免那些不必要的全表扫描(full table scan) , 你必须尽量避免使用CHOOSE优化器,而直接采用基于规则或者基于成本的优化器。

feedom.net

 

    2.访问Table的方式

54ne.com

 

    ORACLE 采用两种访问表中记录的方式: 中国网管联盟www_bitscn_com

    1.全表扫描 中国网管联盟www_bitscn_com

    全表扫描就是顺序地访问表中每条记录。 ORACLE采用一次读入多个数据块(database block)的方式优化全表扫描。 网管网bitsCN_com

    2.通过ROWID访问表 中国网管论坛bbs.bitsCN.com

    你可以采用基于ROWID的访问方式情况,提高访问表的效率, , ROWID包含了表中记录的物理位置信息……ORACLE采用索引(INDEX)实现了数据和存放数据的物理位置(ROWID)之间的联系。 通常索引提供了快速访问ROWID的方法,因此那些基于索引列的查询就可以得到性能上的提高。

网管联盟www.bitsCN.com

 

    3.共享SQL语句 中国网管联盟www、bitsCN、com

    为了不重复解析相同的SQL语句,在第一次解析之后, ORACLE将SQL语句存放在内存中。这块位于系统全局区域SGA(system global area)的共享池(shared buffer pool)中的内存可以被所有的数据库用户共享。 因此,当你执行一个SQL语句(有时被称为一个游标)时,如果它和之前的执行过的语句完全相同, ORACLE就能很快获得已经被解析的语句以及最好的执行路径。 ORACLE的这个功能大大地提高了SQL的执行性能并节省了内存的使用。 网管网bitsCN_com

    可惜的是ORACLE只对简单的表提供高速缓冲(cache buffering) ,这个功能并不适用于多表连接查询。 54com.cn

    数据库管理员必须在init.ora中为这个区域设置合适的参数,当这个内存区域越大,就可以保留更多的语句,当然被共享的可能性也就越大了。

feedom.net

 

    当你向ORACLE 提交一个SQL语句,ORACLE会首先在这块内存中查找相同的语句。

网管联盟www.bitsCN.com

 

    这里需要注明的是,ORACLE对两者采取的是一种严格匹配,要达成共享,SQL语句必须完全相同(包括空格,换行等)。 中国网管论坛bbs.bitsCN.com

    共享的语句必须满足三个条件: 54com.cn

    A.字符级的比较: 网管网bitsCN_com

    当前被执行的语句和共享池中的语句必须完全相同。 例如: 中国网管论坛bbs.bitsCN.com

    SELECT * FROM EMP;

中国网管联盟www_bitscn_com

 

    和下列每一个都不同

中国网管联盟www.bitscn.com

 

    SELECT * from EMP; 54com.cn

    Select * From Emp;

54ne.com

 

    SELECT * FROM EMP; 54com.cn

    B.两个语句所指的对象必须完全相同,例如: 中国网管论坛bbs.bitsCN.com

用户 对象名 如何访问
Jack sal_limit private synonym
  Work_city public synonym
  Plant_detail public synonym
Jill sal_limit private synonym
  Work_city public synonym
  Plant_detail table owner
中国网管联盟www、bitsCN、com

    考虑一下下列SQL语句能否在这两个用户之间共享。

54com.cn

 

 SQL 能否共享 原因
select max(sal_cap) from sal_limit; 不能 每个用户都有一个private synonym - sal_limit , 它们是不同的对象
select count(*0 from work_city where sdesc like 'NEW%'; 两个用户访问相同的对象public synonym - work_city
select a.sdesc,b.location from work_city a , plant_detail b where a.city_id = b.city_id 不能 用户jack 通过private synonym访问plant_detail 而jill 是表的所有者,对象不同

网管网bitsCN.com

 

    C.两个SQL语句中必须使用相同的名字的绑定变量(bind variables) ,例如:

54ne.com

 

    第一组的两个SQL语句是相同的(可以共享),而第二组中的两个语句是不同的(即使在运行时,赋于不同的绑定变量相同的值) feedom.net

    a.

网管网bitsCN_com

 

    select pin , name from people where pin = :blk1.pin; feedom.net

    select pin , name from people where pin = :blk1.pin; 54ne.com

    b.

中国网管论坛bbs.bitsCN.com

 

    select pin , name from people where pin = :blk1.ot_ind; 网管网bitsCN.com

    select pin , name from people where pin = :blk1.ov_ind; 中国网管联盟www_bitscn_com

分享到:
评论

相关推荐

    MySQL管理之道 性能调优、高可用与监控.part2.rar

    《mysql管理之道:性能调优、高可用与监控》由资深mysql专家撰写,以最新的mysql版本为基础,以构建高性能mysql服务器为核心,从故障诊断、表设计、sql优化、性能参数调优、mydumper逻辑、xtrabackup热备份与恢复、...

    高性能Linux服务器构建实战:运维监控、性能调优与集群应用

    《高性能Linux服务器构建实战:运维监控、性能调优与集群应用》以构建高性能Linux服务器为核心内容,从Web应用、数据备份与恢复、网络存储应用、运维监控与性能优化、集群高级应用等多个方面深入讲解了如何构建高性能...

    weblogic平台J2EE调优策略

    3.1.1 Oracle性能优化 3.1.2 Oracle的其他调整 第四章 操作系统调优 4.1 操作系统调整 4.1.1 HP-UX 4.1.2 Solaris 4.1.3 AIX 4.1.4 Linux 4.1.5 Windows 第五章 性能监控和性能分析 5.1 性能瓶颈 5.2 操作系统监控 ...

    Oracle数据库学习指南

    10.ORACLE性能调整1 11.ORACLE性能调整2 12.Oracle专家调优秘密 13.PL_SQL单行函数和组函数详解 14.PL-SQL 15.PLSQL异常处理初步 16.SQL语句性能调整原则 17.创建和使用分区的表 18.基于成本的优化...

    Oracle AWR报告深入分析

    此文档目的帮助更加深入理解 AWR 报表,为 oracle 从业者与技术爱好做性能分析与性 能监控提供参考资料。 文档编写依据: 文档基于 oracle 包源码分析得出。 dbms_swrf_report_internal,test_dbms_workload_...

    5Java性能优化五.zip

    对数据库的调优能够分为三个部分: 在应用层对SQL语句进行优化; 对数据库进行优化。 对数据库软件进行优化。 在应用层优化数据库訪问。涉及大量的编程技巧。比方。当使用JDBC进行查询的时候,对于大量拥有...

    通向架构师的道路

    自己整理的一位牛人写的通向...(第二十四天)之Oracle性能调优-朝拜先知之旅 (第二十五天)SSH的单元测试与dbunit的整合 (第二十六天)漫谈架构与设计文档的写作技巧 (第二十七天)IBM网格计算与企业批处理任务架构

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    有近20年使用Oracle技术产品以及Oracle数据库管理员/Oracle数据库应用管理员的经验,是真正应用集群、性能调优以及数据库内部属性方面的专家。同时是一位演讲家及Oracle ACE。  JARED STILL 从1994年就开始使用...

    集群好书《高性能Linux服务器构建实战》 试读章节下载

    1.6 Nginx性能优化技巧 1.6.1 编译安装过程优化 1.6.2 利用TCMalloc优化Nginx的性能 1.6.3 Nginx内核参数优化 1.7 实战Nginx与PHP(FastCGI)的安装、配置与优化 1.7.1 什么是 FastCGI 1.7.2 Nginx+...

    罗炳森-SQL等价改写核心思想

    拥有5年专职数据库设计&开发(ETL/BI/大数据)经验,10年数据库性能优化&SQL优化经验 长期致力于优化器内部原理以及SQL等价改写的研究和技术分享,累计培训过2000+数据库从业者 2014年出版《Oracle查询优化改写技巧与...

    Oracle DBA 参考手册

    10. Oracle的性能优化 48 10.1. 性能优化概述 48 10.1.1. 性能优化的内容 48 10.1.2. 不同类型系统的优化 48 10.1.2.1. 在线事务处理信息系统(OLTP) 48 10.1.2.2. 数据仓库系统(Data Warehousing) 48 10.2. SQL...

    DataStage开发指南

    4.3 性能调优 47 4.3.1 优化策略 48 4.3.2 关键问题分析 52 4.3.3 并行度 53 4.3.4 处理建议 53 4.3.5 其它 54 4.3.6 机器的对称性 54 4.3.7 并行调度测试说明: 55 5. 开发经验技巧汇总 55 5.1.1 问题 55

    最新Java面试题视频网盘,Java面试题84集、java面试专属及面试必问课程

    │ JVM性能调优 2018-10-25.mp4 │ ├─面试必问-mybaits源码分析 │ │ 鲁班学院-上课笔记mybaits源码分析9-05.docx │ │ │ └─mybaits源码分析 │ mybaits源码分析.mp4 │ ├─面试必问-springcloud架构...

    达内java培训目录

    JavaSE核心 异常处理、多线程基础、IO系统、网络编程、Java反射机制、JVM性能调优(JVM内存结构剖析、GC分析及调优、JVM内存参数优化)、Java泛型、JDK新特性 熟练掌握JavaSE核心内容,特别是IO和多线程;...

    Toad 使用快速入门

    从网络到性能优化,从备份恢复到Error message,一应俱全 例子:遇到失效的存储过程怎么办? 4. 如何对存储过程进行Debug?  需要Toad单独的Debug Option(Standard Version 没有这个选项)  要用Toad对存储...

Global site tag (gtag.js) - Google Analytics