鹰翔宇空
学习和生活
BlogJava
首页
新随笔
联系
聚合
管理
110 Posts :: 141 Stories :: 315 Comments :: 1 Trackbacks
公告
欢迎和大家成为朋友!
欢迎和大家就任何技术进行交流!
QQ:77542728
MSN:hnlyhyq@hotmail.com
Email:hnlyhyq@163.com
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(16)
给我留言
查看公开留言
查看私人留言
随笔分类
(107)
休闲娱乐(4)
学习体会(40)
工作之余(7)
心情驿站(15)
技术文摘(41)
生活百科
随笔档案
(109)
2013年1月 (1)
2009年4月 (1)
2008年7月 (1)
2008年6月 (2)
2008年4月 (1)
2008年3月 (3)
2007年9月 (3)
2007年6月 (1)
2006年11月 (7)
2006年10月 (1)
2006年9月 (3)
2006年8月 (1)
2006年7月 (2)
2006年5月 (10)
2006年4月 (12)
2006年3月 (15)
2006年2月 (24)
2006年1月 (12)
2005年12月 (6)
2005年11月 (3)
文章分类
(145)
AJAX(4)
datebase(29)
EJB(4)
hibernate(13)
IDE(5)
java(35)
javascript(4)
jboss_seam
opensource(7)
Spring(3)
web(20)
webwork
工作之余(1)
技术文摘(20)
生活感悟
文章档案
(141)
2007年2月 (4)
2006年9月 (1)
2006年8月 (1)
2006年7月 (4)
2006年6月 (7)
2006年5月 (31)
2006年4月 (7)
2006年3月 (2)
2006年2月 (60)
2006年1月 (24)
收藏夹
(22)
AJAX(8)
java(7)
javascript
JDBC(4)
web(1)
开源项目(2)
java
javascript
jdbc
neweagle的Blog
主要是数据库方面的一些知识
web
其它
开源项目
ant简单应用
关于ant简单应用的
我的好友
lizongbo(蝙蝠太极)
lizongbo的BLOG
张智辉
最新随笔
1. Linux上安装MQ7.5
2. Oracle to buy sun
3. ORACLE查询表方法
4. 本地化(国际化)rich:calendar控件
5. 使用Richface通过js脚本直接局部刷新
6. jboss seam 常用控件
7. jboss seam 组件驱动的事件
8. 多线程-synchronized
9. jboss_seam初学入门建议
10. 如何使用java动态创建ODBC数据源
搜索
最新评论
1. re: 使用javamail发信过程中的一些问题及解决方法
@痞子z
大哥求解,
--手动阀
2. re: 使用javamail发信过程中的一些问题及解决方法
刚做了一个 发送企业邮箱的,有什么不明白的可以咨询我:qq 775048682,欢迎大家交流
--林仔youyou
3. re: 使用javamail发信过程中的一些问题及解决方法
评论内容较长,点击标题查看
--林仔youyou
4. re: 用java调用oracle存储过程总结
学习了
--bean先森
5. re: 用java调用oracle存储过程总结
SB一个 不解释@ice
--iversion
阅读排行榜
1. 用java调用oracle存储过程总结(86482)
2. 使用javamail发信过程中的一些问题及解决方法(75358)
3. MySql常用命令总结(12374)
4. java中数值计算的精度问题(10501)
5. 如何避免不小心关掉web浏览器窗口(7066)
评论排行榜
1. 用java调用oracle存储过程总结(100)
2. 使用javamail发信过程中的一些问题及解决方法(36)
3. 使用Richface通过js脚本直接局部刷新(11)
4. 项目开发成功与失败的关键影响因素----时间篇(11)
5. java中数值计算的精度问题(9)
ORACLE SQL性能优化(一)
引自:
http://www.dbonline.cn/source/oracle/20031218/oracle%20SQL%20performance%20tuning1.html
ORACLE SQL性能优化系列 (一)
作者: black_snail
关键字 ORACEL SQL Performance tuning
出处 http://www.dbasupport.com
1. 选用适合的ORACLE优化器
ORACLE的优化器共有3种:
a. RULE (基于规则) b. COST (基于成本) c. 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 采用两种访问表中记录的方式:
a. 全表扫描
全表扫描就是顺序地访问表中每条记录. ORACLE采用一次读入多个数据块(database block)的方式优化全表扫描.
b. 通过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;
《下一页》
posted on 2006-02-25 11:34
TrampEagle
阅读(390)
评论(0)
编辑
收藏
所属分类:
技术文摘
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
Chat2DB
C++博客
博问
管理
相关文章:
jboss seam 组件驱动的事件
jboss_seam初学入门建议
Oracle数据库备份与恢复的三种方法(转)
oracle在windows平台上如何突破2g内存(转)
Print Templates
打印时能够分页打印的CSS控制参考(转)
IE6.0浏览器打印机制解析(转)
oracle数据安全面面观(转)
WebLogic Server 管理最佳实践(转)
Jakarta Commons:巧用类和组件(转)
Powered by:
BlogJava
Copyright © TrampEagle