SQL语句调优论文.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SQL语句调优论文

基于Oracle数据库的SQL语句调优 摘要:本文主要研究了几种SQL语句的调优方法,提出了具体的SQL调优规则,并对每条规则给出SQL语句示例及其执行计划和定性分析。并以相应的执行时间、处理事务所需I/O量作为重要的参考指标。 关键字:Oracle、SQL语句调优 1 引言 基于数据库系统的性能调整对于整个系统的正常运行起着至关重要的作用。以为对于大多数应用数据库而言,在经过一段时间的运行后,系统会存在一定的性能问题,可能涉及数据库硬件、数据库服务器、应用程序和网络等方面。也就是说数据库的性能最终决定数据库的可用性。[1,2] 性能调整就是通过优化应用程序、修改系统参数、改变系统配置及硬件调整来改变系统的性能。性能调整包括对硬件配置、操作系统与关系型数据库管理系统配置,以及对访问这些组件的应用的详细分析与优化。系统性能的判定标准依赖于性能衡量的研究,通常认为性能的指标可以通过处理一个事物所需的I/O量、CPU时间量以及响应时间来衡量。性能会随特定环境的不同而变化,并受应用程序、体系结构和资源、服务器以及并发活动的具体情况影响。 数据库性能调整是一项涉及多个层面的复杂工作,通过统一规划、系统分析做出相应的调整方法和措施,可以提高数据库的稳定性和可用性,保障系统高效地运行,解决系统瓶颈,节约系统开销,具有良好的应用价值,同时也对理论研究提供了一定的实践方法支持。[3,4] 当前各种大型的数据库应用系统中,数据量越来越大,数据处理越来越复杂,对数据库安全和性能的要求也越来越高。如何充分利用现有的软硬件资源,获得系统的最大吞吐量及数据处理能力已成为数据库应用系统中的一个重要的研究课题。数据库系统性能的好坏主要通过响应时间和吞吐量来衡量,响应越快,吞吐量越大,系统性能就越好。在很多大型的数据信息采集系统中,在规定时间内采集量大,用户与系统的交互时间短,存在对系统的爆炸性访问,同时存在对数据库海量数据的读写。因此,优化和调整数据库应用系统的性能,使整个数据库应用系统满足以上要求显得非常重要。[5,6] 2 SQL语句调优规则 SQL调整是Oracle调整活动中最花费时间且最具挑战性的操作,它是一个持续进行的过程。每个SQL语句都必须进行单独的调整,而且这些调整必须使用提示或者SQL优化器计划稳定性来实现。另外,SQL调整对Oracle性能有着直接正面的影响。如果Oracle优化器选择了非优化的执行计划,人工调整通常可以使查询速度翻三倍。对于那些每天都要执行上千次的查询来讲,这样做将大大提高数据库的性能,同时还可以延长数据库服务器上硬件的寿命。 下面,我们将基于Oracle数据库介绍并分析几种常用的SQL语句优化策略,结合实例说明SQL优化在Oracle中的实现。 为了方便描述这里先给出所用到的查询表的结构。 employees:(共200000条记录) Attribute Data type id NUMBER, PRIMARY KEY department VARCHAR2(10) salary NUMBER ◆ management:(共10条记录) Attribute Data type department VARCHAR2(10), PRIMARY KEY leader VARCHAR2(10) 下文中用到的符号说明: Symbol Explanation E 表employees的大小 M 表management的大小 P 页面大小 2.1规则一:连接两个表的查询,以较小的表为驱动表 依据所建立的employees及management表,进行如下操作: SELECT distINct management.leader FROM employees, management WHERE employees.department= management.department; Case Analysis 以employees为驱动表 那么只要对employees和management各进行一次全表扫描,需要((E+M)/P)次I/O。 以employees.department= management.department为驱动表 则需要对employees表进行一次全表扫描,对management表进行200000次全表扫描,需要((E+EM/P)/P)次I/O。 2.2规则二:两个表的连接操作,应该以返回行数少的为驱动 依据所建立的employees及management表,进行如下操作: SELECT employees.id, management.leader FROM employees, management WHERE employees.department=

文档评论(0)

jgx3536 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档