Oracle的性能优化

Oracle的性能优化

ID:36841707

大小:606.00 KB

页数:71页

时间:2019-05-10

Oracle的性能优化_第1页
Oracle的性能优化_第2页
Oracle的性能优化_第3页
Oracle的性能优化_第4页
Oracle的性能优化_第5页
资源描述:

《Oracle的性能优化》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Oracle的性能优化本章学习目标本章将介绍优化和调整Oracle数据库系统的一些相关命令和方法。第九章Oracle的性能优化本章内容安排9.1数据库性能优化概述9.2SQL语句的优化9.3Oracle运行环境的优化9.4并发事件处理9.5数据完整性9.7常见问题处理9.1数据库性能优化概述9.1.1数据库性能优化的内容9.1.2不同类型系统的优化(1)调整数据结构的设计。(2)调整应用程序结构设计。(3)调整数据库SQL语句。(4)调整服务器内存分配。(5)调整硬盘I/O,这一步是在信息系统开发之前完成的。(

2、6)调整操作系统参数。9.1.1数据库性能优化的内容1.在线事务处理信息系统(OLTP)这种类型的信息系统一般需要有大量的Insert、Update操作。OLTP系统需要保证数据库的并发性、可靠性和最终用户的速度,这类系统使用的Oracle数据库需要主要考虑下述因素或参数:(1)数据库回滚段是否足够?(2)是否需要建立Oracle数据库索引、聚集、散列?(3)系统全局区(SGA)大小是否足够?(4)SQL语句是否高效?9.1.2不同类型系统的优化2.数据仓库系统(DataWarehousing)这种信息系统的主

3、要任务是从Oracle的海量数据中进行查询,得到数据之间的某些规律。数据库管理员需要为这种类型的Oracle数据库着重考虑下述因素或参数:(1)是否采用B*-索引或者bitmap索引?(2)是否采用并行SQL查询以提高查询效率?(3)是否采用PL/SQL函数编写存储过程?(4)是否有必要建立并行数据库,来提高数据库的查询效率。9.2.2SQL语句优化的具体方法9.2.1SQL语句的优化规则9.2SQL语句的优化9.2.1SQL语句的优化规则(1)去掉不必要的大表、全表扫描。不必要的大表、全表扫描会造成不必要的输

4、入输出,而且还会拖垮整个数据库;(2)检查优化索引的使用这对于提高查询速度来说非常重要;(3)检查子查询,考虑SQL子查询是否可以用简单连接的方式进行重新书写;(4)调整PCTFREE和PCTUSED等存储参数优化插入、更新或者删除等操作;(5)考虑数据库的优化器;(6)考虑数据表的全表扫描和在多个CPU的情况下考虑并行查询。1.索引的使用2.SQL语句排序优化3.选择联合查询的联合次序9.2.2SQL语句优化的具体方法4.SQL子查询的调整1、索引的使用(1)尽量使用索引是全表扫描还是索引范围扫描主要考虑SQ

5、L的查询速度问题。试比较下面两条SQL语句:①语句A:SELECTdname,deptnoFROMdeptWHEREdeptnoNOTIN(SELECTdeptnoFROMemp);②语句B:SELECTdname,deptnoFROMdeptWHERENOTEXISTS(SELECTdeptnoFROMempWHEREdept.deptno=emp.deptno);(2)索引不起作用的情况①存在数据类型隐形转换②列上有数学运算③使用不等于(<>)运算④使用substr字符串函数⑤‘%’通配符在第一个字符⑥字符

6、串连接(

7、

8、)(3)函数的索引例如,日期类型是经常用到的,而且在SQL语句中会使用to_char函数以查询具体的的范围日期。如:select*fromstaff_memberwhereTO_CHAR(birth_day,’YYYY’)=’2003’;可以建立基于函数的索引如:CREATEINDEXInd_emp_birthONstaff_member(to_char((birth_day,’YYYY’));2.SQL语句排序优化排序发生的情况如下:SQL中包含groupby子句SQL中包含orderby子句SQ

9、L中包含distinct子句SQL中包含minus或union操作3.选择联合查询的联合次序联合查询中如涉及到多个表的字段关联及查询,其SQL查询语句联合次序的不同写法,会导致语句对各表具体操作的步骤有不同的次序,所以虽然执行结果相同,但执行效率却不同。4.SQL子查询的调整(1)关联子查询和非关联子查询非关联查询的开销——非关联查询时子查询只会执行一次,而且结果是排序好的,并保存在一个Oracle的临时段中,其中的每一个记录在返回时都会被父查询所引用。在子查询返回大量的记录的情况下,将这些结果集排序,以及将临

10、时数据段进行排序会增加大量的系统开销。关联查询的开销——对返回到父查询的记录来说,子查询会每行执行一次。因此,必须保证任何可能的时候子查询用到索引。(2)在子查询中慎重使用IN或者NOTIN语句在子查询中慎重使用IN或者NOTIN语句,使用where(NOT)exists的效果要好的多。①带IN的关联子查询是多余的,因为IN子句和子查询中相关的操作的功能是一样的。②为非关联子查询指定E

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。