- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Oracle数据库优化原则与方法
Oracle数据库优化原则与方法
摘要:Oracle数据库系统是目前世界上最流行的关系数据库管理系统,系统可移植性好、使用方便、功能强大,适用于各类大、中、小型微机环境。基于数据库的应用系统,其性能的好坏首先取决于系统开发和设计人员,数据库管理员在其基础上进行调整。通过长期维护经验总结,80%左右的系统性能问题都是不良SQL语句引起的,通过对数据库和SQL语句进行优化,可以很大程度提高应用系统的性能。
关键词:数据库 优化 查询 扫描
Oracle数据库以其功能强大、使用方便、可移植性好等卓越优势在社会的各个领域得到广泛应用,在电信行业更是如此。它拥有最广泛的OSS/BSS应用软件供企业用户选择,提供了一整套工具来帮助企业赢得和留住更多的客户,同时集成了企业的所有数据,使企业能够快速有效地部署新的数据、语言和多媒体服务。Oracle数据库在为电信行业创造商业价值方面拥有辉煌的业绩。
由于业务系统中存储和使用的数据量很大,可能会有成百上千的用户同时访问数据库系统,系统经常出现假死机现象,整个系统的性能随着数据量的增大而显著下降。为了解决这个问题,数据库管理员和业务系统开发维护人员从数据库服务器、客户端等对整个系统加以调整,充分发挥Oracle数据库的效能,以提高业务系统的性能。
一个基于Oracle数据库的应用系统,数据库服务器是整个系统的核心,调整其性能,可以从以下几方面考虑:
一、调整操作系统
Oracle数据库服务器很大程度上依赖于运行服务器的操作系统,应尽可能使Oracle服务器使用资源最大化,特别是在Client/Server之间的I/O操作。在数据库中建表时,对于一些简单且有特殊要求的数据,加上适当的完整性约束条件;对一些较复杂的处理规则,可以利用数据库触发器来实现,数据库触发器由数据本身实现。另外,通过在Oracle数据库中创建存储过程和函数,把复杂的SQL语句存储在服务器端,使应用程序只需要简单地调用存储过程和函数,在网络上只需传输调用的存储过程或函数的名字和输出结果。这样都可以有效地减少在客户端和服务器端之间传递SQL语句的可能性,减轻网络I/O负担。
通过长期维护经验总结:80%的性能问题都是由不良的SQL语句引起的,所以调剂和建立最佳的SQL语句对于业务系统的可扩展性和响应时间来说都显得尤为重要。影响SQL语句执行速度的主要因素有:驱动表的选择是否恰当、查询时是否用到恰当的索引、表之间的连接顺序及条件顺序是否恰当等。对于一段准备执行的SQL语句,首先分析其执行计划。现在有很多可视化工具,比如PL/SQL或者TOAD等都提供了非常方便的手段来获取SQL语句的执行计划。通过分析执行计划,结合涉及到的表的数据量,我们可以估算或者测试该语句的执行效率,分析表WHERE条件中涉及的字段。根据SQL语句中使用的查询条件,总能够找到一个性能最优的执行方式。调整SQL语句的写法,可以遵循以下优化原则和方法:在基于规则的优化方式(Rule-BasedOpimization,简称为RBO)的情况下,FROM子句中写在最后的表将作为驱动表被最后处理,在关联查询多个表的情况下,应选择最有效率的表名顺序,将记录数最少的表作为驱动表。
二、尽量避免无计划的全表扫描
当表的记录数较大时,必然会影响查询速度。这时,通过索引查询数据比全表扫描效率要高得多。在写SQL语句时,应遵循以下原则:避免在索引列上使用NOT IN、IS NULL、IS NOT NULL、LIKE等操作符或者函数计算(如转换字段类型),否则Oracle数据库会停止使用索引转而执行全表扫描。实际应用中,有时必须要在列中应用函数等条件,则可以通过强制索引提示来利用索引。当然,不一定用索引就一定是最优的,比如一个表只有两行数据,一次I/O就可以完成全表的检索,而此时用索引则需要两次I/O,这时对这个表做全表扫描是最好的。
三、对多表进行查询的情况
实际应用中经常存在对多表进行关联查询的情况,当Oracle评估表的连接顺序时,必须考虑到表之间所有可能的连接。例如
5个表之间的连接线路有120种,当一个查询中含有超过10个表的连接时,排列的问题将变得更为显著。解决此问题的最好方法是手工指定表的连接顺序。为了尽快创建最小的解决方案集,通常优先使用限制最严格的WHERE子句来连接表。
例如:select /* +ordered use_nl(bonus)parallel(e,4)*/e.ename,hiredate,m From empe,bonus b
where e.ename=b.ename
上面这条语句通过ordere提示要求优化器按顺序连接在SQL语句中指定的表,在FR
您可能关注的文档
最近下载
- 杨瑞龙-国有企业分类改革与公司治理结构创新研究报告.ppt VIP
- KernelMethod核回归核方法.ppt VIP
- (正式版)D-L∕T 607-2017 汽轮发电机漏水、漏氢的检验.docx VIP
- 2.5.2 解直角三角形的应用-方位角学历案.docx VIP
- JTGT3660—2020-公路隧道施工技术规范.docx VIP
- 教科EEC版小学英语五年级上册全册教案.pdf VIP
- 关于卫生院“十五五”发展规划方案(详细版).pdf VIP
- T∕CTES 1017-2019 纺织品 织物触感检测与评价方法 三点梁法.pdf VIP
- 健康生活方式指导员培训考核习题.docx VIP
- 施工现场临时用电的安全教育与培训.pptx VIP
原创力文档


文档评论(0)