- 浏览: 890649 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (687)
- java (127)
- servlet (38)
- struts (16)
- spring (22)
- hibernate (40)
- javascript (58)
- jquery (18)
- tomcat (51)
- 设计模式 (6)
- EJB (13)
- jsp (3)
- oracle (29)
- RUP (2)
- ajax (3)
- java内存管理 (4)
- java线程 (12)
- socket (13)
- path (5)
- XML (10)
- swing (2)
- UML (1)
- JBPM (2)
- 开发笔记 (45)
- Note参考 (15)
- JAXB (4)
- Quartz (2)
- 乱码 (2)
- CSS (2)
- Exception (4)
- Tools (7)
- sqlserver (3)
- DWR (7)
- Struts2 (47)
- WebService (2)
- 问题解决收藏 (7)
- JBOSS (7)
- cache (10)
- easyUI (19)
- jQuery Plugin (11)
- FreeMarker (6)
- Eclipse (2)
- Compass (2)
- JPA (1)
- WebLogic (1)
- powerdesigner (1)
- mybatis (1)
最新评论
-
bugyun:
受教了,谢谢
java 正则表达式 过滤html标签 -
xiongxingxing_123:
学习了,感谢了
java 正则表达式 过滤html标签 -
wanmeinange:
那如果无状态的。对同一个任务并发控制怎么做?比如继承Quart ...
quartz中参数misfireThreshold的详解 -
fanjieshanghai:
...
XPath 元素及属性查找 -
tianhandigeng:
还是没明白
quartz中参数misfireThreshold的详解
今天没事来说说oracle性能优化的技巧。。
1.选用适合的ORACLE优化器
ORACLE的优化器共有3种:
1.RULE(基于规则) 2.COST(基于成本) 3.CHOOSE(选择性)
设置缺省的优化器,可以通过对init.ora文件中OPTIMIZER_MODE参数的各种声明,如RULE,COST,CHOOSE,ALL_ROWS,FIRST_ROWS . 你当然也在SQL句级或是会话(session)级对其进行覆盖。
为了使用基于成本的优化器(CBO, Cost-Based Optimizer) , 你必须经常运行analyze 命令,以增加数据库中的对象统计信息(object statistics)的准确性。
如果数据库的优化器模式设置为选择性(CHOOSE),那么实际的优化器模式将和是否运行过analyze命令有关。 如果table已经被analyze过, 优化器模式将自动成为CBO , 反之,数据库将采用RULE形式的优化器。
在缺省情况下,ORACLE采用CHOOSE优化器, 为了避免那些不必要的全表扫描(full table scan) , 你必须尽量避免使用CHOOSE优化器,而直接采用基于规则或者基于成本的优化器。
2.访问Table的方式
ORACLE 采用两种访问表中记录的方式:
1.全表扫描
全表扫描就是顺序地访问表中每条记录。 ORACLE采用一次读入多个数据块(database block)的方式优化全表扫描。
2.通过ROWID访问表
你可以采用基于ROWID的访问方式情况,提高访问表的效率, , ROWID包含了表中记录的物理位置信息……ORACLE采用索引(INDEX)实现了数据和存放数据的物理位置(ROWID)之间的联系。 通常索引提供了快速访问ROWID的方法,因此那些基于索引列的查询就可以得到性能上的提高。
3.共享SQL语句
为了不重复解析相同的SQL语句,在第一次解析之后, ORACLE将SQL语句存放在内存中。这块位于系统全局区域SGA(system global area)的共享池(shared buffer pool)中的内存可以被所有的数据库用户共享。 因此,当你执行一个SQL语句(有时被称为一个游标)时,如果它和之前的执行过的语句完全相同, ORACLE就能很快获得已经被解析的语句以及最好的执行路径。 ORACLE的这个功能大大地提高了SQL的执行性能并节省了内存的使用。
可惜的是ORACLE只对简单的表提供高速缓冲(cache buffering) ,这个功能并不适用于多表连接查询。
数据库管理员必须在init.ora中为这个区域设置合适的参数,当这个内存区域越大,就可以保留更多的语句,当然被共享的可能性也就越大了。
当你向ORACLE 提交一个SQL语句,ORACLE会首先在这块内存中查找相同的语句。
这里需要注明的是,ORACLE对两者采取的是一种严格匹配,要达成共享,SQL语句必须完全相同(包括空格,换行等)。
共享的语句必须满足三个条件:
A.字符级的比较:
当前被执行的语句和共享池中的语句必须完全相同。 例如:
SELECT * FROM EMP;
和下列每一个都不同
SELECT * from EMP;
Select * From Emp;
SELECT * FROM EMP;
B.两个语句所指的对象必须完全相同,例如:
用户 对象名 如何访问
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
考虑一下下列SQL语句能否在这两个用户之间共享。
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 是表的所有者,对象不同
C.两个SQL语句中必须使用相同的名字的绑定变量(bind variables) ,例如:
第一组的两个SQL语句是相同的(可以共享),而第二组中的两个语句是不同的(即使在运行时,赋于不同的绑定变量相同的值)
a.
select pin , name from people where pin = :blk1.pin;
select pin , name from people where pin = :blk1.pin;
b.
select pin , name from people where pin = :blk1.ot_ind;
select pin , name from people where pin = :blk1.ov_ind;
转自http://www.iteye.com/topic/774029
发表评论
-
在Oracle查询语句中怎样手动指定索引
2011-09-16 01:08 1240select /*+ index(tablename inde ... -
数据库范式(1NF 2NF 3NF BCNF)详解一
2011-08-28 13:35 4559数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数 ... -
数据库范式(1NF 2NF 3NF BCNF)详解二
2011-08-28 13:32 1345范式应用 我们来逐步搞定一个论坛的数据库,有如下信息: ... -
ORACLE数据库TM(表级)锁小结
2011-08-24 14:32 2218SQL语句 表锁模 ... -
Oracle中NVARCHAR2和VARCHAR2的区别
2011-05-20 10:16 2861Oracle中NVARCHAR2和VARCHAR2的区别 【 ... -
Oracle中connect by prior用法
2011-03-08 17:18 891connect by prior 是结构化 ... -
【总结】oracle恢复误删除数据,解除锁定的等sql语句
2011-03-08 16:55 1078转载请注明出处:http://renjie120.iteye. ... -
授予oracle导入用户表权限
2010-12-13 15:38 1094给用户增加导入数据权 ... -
如何写批处理文件自动将数据导入oracle数据库
2010-12-13 14:30 3298Oracle数据库的自动导入 ... -
如何使用PLSQL Developer从oracle数据库 导入导出数据
2010-12-13 14:26 4120如何使用PLSQL Developer从oracle数据库 导 ... -
oracle内存优化
2010-12-01 21:54 974内存2G的优化策略。 SGA最大大小:1300 -
让sql语句不排序,按照in语句的顺序返回结果
2010-12-01 21:47 1751oracle写法: Select * from we ... -
拯救oracle刚被误删的数据
2010-12-01 21:43 10942.误删除所有记录并且提交更改。SQL>delete f ... -
强制停止oracle正在执行的job
2010-12-01 21:40 1979一:温柔的方法:1、查看所有job;select * from ... -
oracle中connect by prior实现递归查询
2010-12-01 14:15 1160收集的几条在oracle中通过connect by prior ... -
oracle高级查询实例,提升效率
2010-12-01 13:57 956使用Oracle特有的查询语法, 可以达到事半功倍的效果。 ... -
oracle DBA必需掌握的常用命令集锦
2010-12-01 13:39 990第一章:日志管理 1.forcing log swit ... -
alce表空间使用情况查询
2010-12-01 12:16 8651.查询oracle表空间的使用情况 select b.f ... -
几条有用sql
2010-12-01 12:14 613查找数据库中所有字段 以对应的表 select C.colu ... -
SYS_REFCURSOR一例
2010-09-29 12:25 27341.看见很多人调试过程依然使用DBMS_OUTPUT.PUT_ ...
相关推荐
### Oracle性能优化技巧详解 #### 一、Oracle优化器模式 在Oracle数据库中,优化器是决定查询执行计划的关键组件,其目标是最小化资源消耗并最大化查询性能。Oracle提供了三种主要的优化器模式:基于规则(RULE)...
Oracle性能优化技巧 1 oracle性能调整的十大要点 3 提高Oracle的查询统计速度方法简介 18 oracle优化:说一说Oracle的优化器(Optimizer) 22 oracle数据库:Oracle非法数据库对象引起的错误 24 Oracle优化实例 26 ado....
Oracle SQL性能优化是数据库管理中的关键环节,它涉及到多个层面,包括数据结构设计、应用程序结构、SQL语句、服务器内存分配、硬盘I/O以及操作系统参数的调整。这些方面都直接影响到Oracle数据库系统的运行效率和...
《Oracle性能优化求生指南》不仅涵盖了Oracle数据库性能优化的基本理论知识,还包含了大量实用技巧和真实世界中的案例研究。无论你是刚接触Oracle的新手还是经验丰富的专业人士,都能从中获益良多。通过学习本书提供...
### Oracle SQL性能优化技巧总结 #### 一、选择最有效率的表名顺序 在Oracle数据库中,SQL语句的执行顺序对查询性能有着显著的影响。对于基于规则的优化器而言,FROM子句中表的顺序至关重要。Oracle的解析器会按照...
《Oracle性能优化绝版好书:高级OWI与ORACLE性能调整》这本书深入探讨了Oracle数据库性能优化的关键技术和策略,特别关注了Oracle Wait Interface (OWI)和性能调整的实践应用。OWI是Oracle数据库中用于监控和诊断...
《Oracle查询优化改写技巧与案例》不讲具体语法,只是以案例的形式介绍各种查询语句的..., 如果您是开发人员,经常与Oracle打交道,那么《Oracle查询优化改写技巧与案例》可以帮助您处理复杂的需求,写出高性能的语句。
Oracle性能优化是一个涵盖广泛且至关重要的主题,对于数据库的高效运行和企业级应用的性能提升起着决定性作用。本文将深入探讨Oracle性能优化的两个关键方面:SGA(System Global Area)的Shared Pool优化和Buffer ...
### Oracle SQL性能优化技巧大总结 #### 一、选择最有效率的表名顺序 **背景**:在基于规则的优化器(RBO)中,Oracle解析器处理FROM子句中的表名是从右向左的。为了提高查询效率,需要合理安排表的顺序。 **技巧...
### ORACLE存储过程性能优化技巧 #### 一、概述 在数据库管理中,ORACLE存储过程的性能优化是一项至关重要的工作。高效的存储过程不仅能提升应用系统的响应速度,还能减少服务器资源的消耗,提高整体系统性能。...
, 如果您是开发人员,经常与Oracle打交道,那么《Oracle查询优化改写技巧与案例》可以帮助您处理复杂的需求,写出高性能的语句。如果您是运维人员,则《Oracle查询优化改写技巧与案例》可以帮助您更快地完成慢语句的...
### Oracle性能优化培训知识点 #### 一、Oracle性能优化概览 在Oracle性能优化过程中,主要涉及以下几个方面:磁盘I/O优化、内存优化、CPU优化以及查询优化等。通过这些方面的综合调整与优化,可以显著提升Oracle...
总的来说,《Oracle性能优化技术内幕》是一本深度解析Oracle数据库性能优化的宝典,它将帮助读者从多个层面深入理解Oracle的工作原理,掌握优化技巧,从而提升数据库系统的整体性能。通过阅读此书,读者不仅能学会...
书写高质量的oracle sql,用表连接替换EXISTS,索引的技巧等等
Oracle数据库内部培训资料,oracle专业优化文档,Oracle的SQL语句执行效率问题查找与解决方法文档,oracle性能优化总结文档,数据库设计方法文档,SQL语句全优化文档,数据库设计中的14个实用技巧文档,优化Oracle库表...