基于oracle的查询优化.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于oracle的查询优化

基于ORACLE的查询优化 一、DBMS查询规则 查询优化是在查询执行引擎生成一个执行策略的过程中,尽量使查询的总开销和总时间达到最小。 任何关系数据库都有一套解决查询的规则,而各种关系数据库查询的过程稍有所区别,但是基本的操作思想和过程是一致的。DBMS的查询规则一般分为以下几个过程:语法分析与翻译处理;查询优化处理;执行。 基本SQL查询语句 基本SQL查询语句 语法分析与翻译 结果输出 相关数据的 统计信息 优化器 执 行 数 据 图1 DBMS查询规则图 1.语法分析与翻译处理 查询处理开始之前 ,系统必须在扩展关系代数的基础上将查询语句翻译成可使用的形式,为此这一阶段完成两个主要的功能:一是检查查询语句语法的正确性;二是把查询语句分析成关系数据库能够理解的各个组成部分,构造该查询的语法分析树,并将其翻译成关系代数表达式。 2.查询优化处理 查询优化是为查询选择最有效的查询执行计划的过程。查询优化一方面在关系代数级进行优化,要做的是力图找出与给定表达式等价且执行效率最高的一个表达式。为了在诸多查询执行计划中做出选择,优化器必须估计每个查询执行计划的代价。在没有真正执行查询计划之前,准确计算出查询计划的代价通常是不可能的。因此,优化器要利用各关系的统计信息,来对计划做出最佳估计。 3.执行 执行就是将优化器所选择的执行计划执行,执行引擎从相应的数据库文件中筛选数据,将结果输出。 优化器在选取优化规则时,大多数DBMS(如ORACLE、SYBASE、SQL SERVER等)都是采用基于代价的优化方法,优化器从数据字典中获取许多统计信息,根据不同的算法估计出不同查询规划的代价,然后选择一个较优的规划。 对于ORACLE,在ORACLE7之前,主要是使用基于规则的优化器RULE BASED OPTIMIZATION (简称RBO)。从ORACLE8开始,ORACLE把一个代价引擎(COST ENGINE)集成到数据库内核中,用来估计每个执行计划需要的代价,该代价将每个执行计划所耗费的资源进行量化,从而CBO可以根据这个代价选择出最优的执行计划,即基于代价的优化器COST BASED OPTIMIZATION(简称CBO)。 要注意的是:虽然CBO的功能随着ORACLE新版本的推出,功能越来越强,但它不是能包治百病的神药,否则就不再需要DBA了。 由于一系列因素都会影响语句的执行,优化器综合权衡各个因素,在众多的执行计划中选择认为是最佳的执行计划。然而,应用设计人员通常比优化器更知道关于特定应用的数据特点。无论优化器多么智能,在某些情况下开发人员能选择出比优化器选择的最优执行计划还要好的执行计划,这是需要人工干预数据库优化的主要原因。事实表明,在某些情况下,确实需要DBA对某些语句进行手工优化。 二SQL语句优化步骤 数据库系统的生命周期可分为设计、开发和成品三个阶段。在这三个阶段都可以提高查询速度。由于设计阶段进行数据库性能优化的成本最低,收益最大,因此在设计阶段就应该选择合理的数据库设计方法。而在数据库系统的开发和成品阶段则需对应用程序进行优化:通常应用程序可分为两个方面——源代码和SQL语句。源代码的优化由于涉及程序逻辑的改变,因此优化源代码要在时间成本和风险成本上投入较高代价,因此对SQL语句的优化尤为重要[3]。 调整现有应用程序中SQL语句的最好方法是采取下列步骤[4]: 1.熟悉应用程序。管理员不仅需要熟悉特定的SQL语句,还需要熟悉应用程序的功能和所做的操作。 2.使用SQL TRACE工具分析特定SQL语句执行的操作,所使用的RDBMS的功能和应用程序对这些功能的使用情况。 3.在SQLTRACE中使用EXPLAIN PLAN命令分析优化器执行这些SQL语句的方式。 下面具体的介绍一下三个步骤: 1.熟悉应用程序 管理员不仅需要了解SQL语句,还需要了解这些SQL语句的执行效果。首先,需要将不同的SQL语句形成表格并确定每条SQL语句对数据库中每个表的访问次数。这个表以可视化方式告诉管理员用户对数据库中哪些表的访问最为频繁。 这个表为管理员确定哪些SQL语句影响了哪些表提供了一个很好的快速参考。管理员还可进一步深化这种方法,并将该表中的SQL语句分成不问的类型,比如SELECT语句、INSERT语句、UPDATE语句和DELETE语句等等。如果应用程序是在脱离实际应用背景的情况下开发的,那么这种方法可能是不现实的。 2.使用SQL TRACE分析SQL语句 通过在SQL语句上执行SQL TRACE工具,管理员可收集到与所有SQL语句执行操作有关的大量极具价值的信息。SQL TRACE提供了如下一些非常有价值的信息: (1)解析、执行和返回数据的次数 (2)CPU时间和执行时间 (3)物理读

文档评论(0)

1honey + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档