期刊库

教育   经济   科技   财会   管理   
医学   法学   文史   工业   建筑   
农学   水利   计算机   更多>>
 首 页    论文大全   论文精品    学术答疑    论文检测    出书咨询    服务流程    诚信通道    关于我们 

关于Oracle数据库SQL优化系统的研究

人气指数: 发布时间:2014-05-28 16:05  来源:http://www.zgqkk.com  作者: 刘占江 王志超
分享到:

 

  【 摘 要 】 随着信息时代的不断发展,人们在工作、学习和生活中越来越离不开数据。大量的数据存储在数据库中,通过SQL语言被应用程序调用,对SQL语句进行优化处理,可以大大提高系统的性能。本文首先分析了Oracle数据库的执行过程和查询机制,其次对SQL优化系统进行了分析,描述SQL优化规则验证,分析了整个优化系统的流程。本文对于数据库研发人员具有一定的积极作用。

  【 关键词 】 Oracle数据库;SQL;优化

  1 引言

  当前,数据库系统存储的数据量越来越大,可存储的数据结构越来越复杂,用户与应用系统进行数据的交互,主要是与数据库进行交互操作。数据库系统是应用系统不可缺少的一部分,数据库性能出现问题的时候,其整个应用系统的性能也会受到极大的影响。通常运营商会优先考虑通过升级数据库软硬件平台的方式来提升系统性能,但这无形中会增加整个系统的开销。随着技术的不断发展,SQL语句优化受到人们的关注,在提升数据性能方面起到越来越重要的作用。

  2 Oracle 数据库的运行

  在实际应用系统的运行中,无论SQL语句的性能如何,最终都是在Oracle数据库中运行,分析Oracle数据库的执行过程和执行机制,实际上就是分析SQL语句执行过程,为SQL语句的优化提供依据。

  2.1 Oracle数据库的执行过程

  数据库主要用来存放数据,是整个系统的核心。应用系统通过界面操作调用SQL语句给数据库,Oracle数据库收到可执行SQL语句请求的具体执行过程如图1所示。

  (1)产生cursor。数据库首先对SQL语句进行解析,首先取得一个HASH值,该值与数据库系统中所执行过SQL语句的HASH值进行比较,查看在高速缓存区中是否存在该值。如果存在,说明该SQL语句已经被执行过了,则直接调用与之匹配的SQL语句即可。否则,则进行接下来的操作。

  (2)解析语句。如果高速缓冲区中没有与之匹配的HASH值,说明该语句并没有被执行过,是首次执行。需要对该SQL语句进行语法、表名、字段名等相关内容的检查,查看是否合法。另外,还需要较长的时间检查用户的权限和锁。假如没有问题,则直接将SQL语句存放入系统表中,提供以后的匹配检查工作依据。

  (3)选择执行计划。Oracle数据库内部的优化器会自动提供一条代价最小的执行路径,生成其执行计划,并和语句一起放入到高速缓存之中。Oracle数据库的优化器主要有两种类型:基于规则的优化器(RBO)和基于代价的优化器(CBO)。RBO制定了SQL执行的等级,使用者不得改变其设定的等级;CBO是分析每条执行径的代价,是当前应用最广泛的类型。

  (4)执行语句。根据选择的执行计划进行数据查询,并将结果及相关参数写入到系统动态视图中。

  (5)SQL语句执行结束后,将关闭相关的cursor。

  2.2 Oracle数据库查询机制

  在执行过程中,执行计划反应了Oracle的查询机制。

  (1)表达式转换。一般来说,SQL语句在具体的应用中比较复杂,将复杂的SQL语句拆分为若干等效功能的简单SQL语句。SQL语句主要由Select、From及Where组成,组成一个个可以执行的节点,这些节点可以单独执行彼此之间并不相互进行影响,最终返回明确的结果。Select的组成如图2所示。

  (2)根据应用系统的具体应用确定参数来决定生成执行计划的方式。整个执行计划的内容主要有表连接方式、表扫描方式、子句执行顺序等内容,根据参数可以组成不同的执行方式,每种执行方式所花费的代价也是不同的。Oracle数据库的优化器会根据不同的组合方式来确定哪种执行方式更加有效,从而确定最优的执行计划。

  (3)执行SQL语句。当连接的数据表的数目多于1个时,数据库的优化器根据执行计划中表的连接方式对其连接,根据相关的参数,返回相对应的结果。

  3 SQL优化系统

  3.1 SQL优化规则验证

  SQL优化系统首先要做到的是根据规则对SQL语句进行优化改写,分析其有效性。SQL优化规则验证主要包括以下几个方面。

  (1)SQL语句预处理。该部分的主要目的是将语句格式转化为后台可识别的格式,使Oracle数据库能够产生计划,Oracle主要执行的是SQL语句或SQL命令文件,当采用SQL命令文件执行时,其文件中的语句是一个整体,执行过程中不能中断。

  (2)数据库服务器端执行。通过输入优化的SQL语句并将相关的参数传递给Oracle即是Oracle的执行。

  (3)输出结果。将产生的结果集以字符串数组的形式交由系统的前台处理。

  3.2 SQL优化整体流程

  通过Oracle数据库中SQL的执行过程分析,对给定的SQL语句进行优化处理。其主要的流程是:获取低效的SQL语句,获取优化建议,根据相关的优化建议对SQL语句进行优化处理,将优化后语句进行参数比对,如果优化未完成,则根据规则进行优化,否则直接结束。对于优化语句的处理,主要分析低效的SQL语句,时间最长的SQL语句,耗空间最大的SQL语句。

  其具体流程如图3所示。

  4 结束语

  本文对Oracle数据库SQL优化系统进行研究,详细地介绍了Oracle数据库执行的过程、查询机制,以及SQL优化的全过程,为数据库应用系统研发人员在进行应用数据库系统设计、SQL语句编写优化方面提供了有针对性的参考。

  参考文献

  [1] 袁爱梅.Oracle数据库性能优化研究[D].上海:华东师范大学.2007.

  [2] 郭敏,郭靖.Oracle 10g数据库性能优化的研究[J].武汉理工大学学报.2005.27(10):103-105.

  [3] 张学义,王观玉,黄隽.基于Oracle数据库SQL查询优化研究[J].制造业自动化,2011,33(1):116-121.

  [4] 宋彩霞.Oracle数据库基于索引SQL优化方法的研究与实现[J].计算机工程与设计.2004,25(4):2327-2330.

 


    期刊库(http://www.zgqkk.com),是一个专门从事期刊推广、投稿辅导的网站。
      本站提供如何投稿辅导,寻求投稿辅导合作,快速投稿辅导,投稿辅导格式指导等解决方案:省级投稿辅导/国家级投稿辅导/核心期刊投稿辅导//职称投稿辅导。


      【免责声明】本文仅代表作者本人观点,与投稿辅导_期刊发表_中国期刊库专业期刊网站无关。投稿辅导_期刊发表_中国期刊库专业期刊网站站对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。请读者仅作参考,并请自行承担全部责任。

     
    QQ在线咨询
    投稿辅导热线:
    180-1501-6272
    微信号咨询:
    fabiaoba-com
    咨询电话:18015016272 投稿邮箱:zgqkk365#126.com(#换成@)
    本站郑重声明:文章只代表作者观点, 并不意味着本站认同。所载文章、数据仅供参考,使用前请核实,风险自负。
    部分作品系转载,版权归原作者或相应的机构   若某篇作品侵犯您的权利,请来信告知.版权:周口博闻教育咨询有限公司 
    Copyright © 2005-2023 . 期刊库 版权所有