oraclesql优化讲义

oraclesql优化讲义

ID:8961386

大小:120.50 KB

页数:24页

时间:2018-04-13

oraclesql优化讲义_第1页
oraclesql优化讲义_第2页
oraclesql优化讲义_第3页
oraclesql优化讲义_第4页
oraclesql优化讲义_第5页
资源描述:

《oraclesql优化讲义》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、Oraclesql优化Oraclesql优化一.培训目的数据库参数进行优化所获得的性能提升全部加起来只占数据库应用系统性能提升的40%左右,其余60%的系统性能提升全部来自对应用程序的优化。许多优化专家甚至认为对应用程序的优化可以得到80%的系统性能提升。因此可以肯定,通过优化应用程序来对数据库系统进行优化能获得更大的收益。对应用程序的优化通常可分为两个方面:源代码的优化和SQL语句的优化。由于涉及到对程序逻辑的改变,源代码的优化在时间成本和风险上代价很高(尤其是对正在使用中的系统进行优化)。另一方面,源代码的优化对数据库系统性能的提升收效有限,因为应用程序对数据库的操作最终要表现为SQL语句

2、对数据库的操作。对SQL语句进行优化有以下一些直接原因:1.SQL语句是对数据库(数据)进行操作的惟一途径,应用程序的执行最终要归结为SQL语句的执行,SQL语句的效率对数据库系统的性能起到了决定性的作用。2.SQL语句消耗了70%~90%的数据库资源。3.SQL语句独立于程序设计逻辑,对SQL语句进行优化不会影响程序逻辑,相对于对程序源代码的优化,对SQL语句的优化在时间成本和风险上的代价都很低。4.SQL语句可以有不同的写法,不同的写法在性能上的差异可能很大。5.SQL语句易学,难精通。SQL语句的性能往往同实际运行系统的数据库结构、记录数量等有关,不存在普遍适用的规律来提升性能。二.优化

3、数据库的思想:1、关键字段建立索引。2、使用存储过程,它使SQL变得更加灵活和高效。3、备份数据库和清除垃圾数据。4、SQL语句语法的优化。5、清理删除日志。三.SQL语句优化的原则:3.1ORACLE的优化器北京并捷信息技术有限公司第24页共24页Oraclesql优化优化器有时也被称为查询优化器,这是因为查询是影响数据库性能最主要的部分,不要以为只有SELECT语句是查询。实际上,带有任何WHERE条件的DML(INSERT、UPDATE、DELETE)语句中都包含查询要求,在后面的文章中,当说到查询时,不一定只是指SELECT语句,也有可能指DML语句中的查询部分。优化器是所有关系数据库

4、引擎中的最神秘、最富挑战性的部件之一,从性能的角度看也是最重要的部分,它性能的高低直接关系到数据库性能的好坏。我们知道,SQL语句同其它语言(如C语言)的语句不一样,它是非过程化(non-procedural)的语句,即当你要取数据时,不需要告诉数据库通过何种途径去取数据,如到底是通过索引取数据,还是应该将表中的每行数据都取出来,然后再通过一一比较的方式取数据(即全表扫描),这是由数据库的优化器决定的,这就是非过程化的含义,也就是说,如何取数据是由优化器决定,而不是应用开发者通过编程决定。在处理SQL的SELECT、UPDATE、INSERT或DELETE语句时,Oracle必须访问语句所涉及

5、的数据,Oracle的优化器部分用来决定访问数据的有效路径,使得语句执行所需的I/O和处理时间最小。为了实现一个查询,内核必须为每个查询定制一个查询策略,或为取出符合条件的数据生成一个执行计划(executionplan)。典型的,对于同一个查询,可能有几个执行计划都符合要求,都能得到符合条件的数据。例如,参与连接的表可以有多种不同的连接方法,这取决于连接条件和优化器采用的连接方法。为了在多个执行计划中选择最优的执行计划,优化器必须使用一些实际的指标来衡量每个执行计划使用的资源(I/0次数、CPU等),这些资源也就是我们所说的代价(cost)。如果一个执行计划使用的资源多,我们就说使用执行计划

6、的代价大。以执行计划的代价大小作为衡量标准,优化器选择代价最小的执行计划作为真正执行该查询的执行计划,并抛弃其它的执行计划。在ORACLE的发展过程中,一共开发过2种类型的优化器:基于规则的优化器和基于代价的优化器。这2种优化器的不同之处关键在于:取得代价的方法与衡量代价的大小不同。现对每种优化器做一下简单的介绍:基于规则的优化器--RuleBased(Heuristic)Optimization(简称RBO):    在ORACLE7之前,主要是使用基于规则的优化器。ORACLE在基于规则的优化器中采用启发式的方法(HeuristicApproach)或规则(Rules)来生成执行计划。例如

7、,如果一个查询的where条件(whereclause)包含一个谓词(predicate,其实就是一个判断条件,如”=”,“>”,”<”等),而且该谓词上引用的列上有有效索引,那么优化器将使用索引访问这个表,而不考虑其它因素,如表中数据的多少、表中数据的易变性、索引的北京并捷信息技术有限公司第24页共24页Oraclesql优化可选择性等。此时数据库中没有关于表与索引数据的统计性描述,如表中有多上

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

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

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