开发人员如何优化ORACLE执行语句

来源 :硅谷 | 被引量 : 0次 | 上传用户:color5188
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:各个领域中,对数据库的使用力度不断增加:更多的企业级数据库被使用,使用情况多样化、数据库容量增大化的趋势明显。与此同时,基于实际业务需要的应用也想数据库提出了更高效率的要求:数据库调优势在必行。报告的作者具有多年大型系统开发和企业级数据库维护的经验,基于SQL语句在Oracle数据库中的执行逻辑,在以下报告中提出多种数据库优化的方法,从而达到提高Oracle数据库性能、改善应用系统运行环境的目的。
  关键词:数据库;共享池;扫描;索引
  中图分类号:NA 文献标识码:A 文章编号:1671-7597(2011)0220021-01
  
  Oracle数据库调优,是软件工程师和数据库管理员群体中永恒的话题。每一个技术人员,都基于自身对各自系统的了解,有着不同的调优方法。
  作者从事航空结算领域的系统开发有六年之久,所接触的系统均有着这一行业中系统的显著特征,即业务逻辑复杂、数据处理量大、数据处理效率要求高。另外,开发团队人数众多,且大多数情况是每个人分别实现不同业务模块。
  以上环境因素,造成开发人员在实际开发工作中,对数据库结构设计的自由度大大降低。因此,如何编写高效的、实现具体业务逻辑的SOL语句,就显得非常重要。技术人员通过对ORACLE数据库中SOL语句执行过程的了解,可以有针对性地改善运行语句的步骤和处理逻辑,大幅度缩减SQL语句运行时间,从而提高单位时间内的数据处理量。
  在ORACLE数据库中,SOL语句的执行过程大致可以分为解析、执行和提取运行结果三步。那么,如何在具体开发过程中优化执行语句呢?接下来我们将具体讨论。
  
  1、对解析过程的优化
  
  SOL语句提交给ORACLE后,首先需要计算的是语句数值,同时查找是否存在共享池中与此语句数值相同的其他语句,以及共享池中是否存在与此语句字符完全匹配的语句。其中,第二种条件的优先级高于第一种条件。也就是说,最理想的步骤,是在计算语句数值之后,找到共享池中值相同并且字符完全匹配的语句后直接执行。如果ORACLE接受了一个与共享池中的语句相一致的语句,这个语句就会被重用。因此,在解析阶段,优化的秘诀是使ORACLE接受一个已经在共享池中存在的语句,这样运行的效率,相比准备新的语句要高得多。
  另外,Oracle为开发人员提供了充足的在数据库中存储代码的能力。充分利用包括存储过程、触发器、程序包、函数等在内的内部对象,使得数据库可以直接访问共享池,而不使用外部资源。可以说,用数据库中存储的程序代码设计应用系统,数据库的运行会更加高效。因此,在对现有系统进行维护性开发或优化工作的过程中,建议检查所有的事务处理以及主要的通用过程,研究其处理程序是否可以转换为数据库中存储的程序代码。如果可以用Oracle中的过程、程序包、函数、触发器等来实现,将大大提高应用程序的运行速度。
  尤其是在以金融、航空领域为代表的大型软件,其应用于业务模块的时间动辄数年,而技术手段的更新日新月异,这就很可能造成同一套软件由多种开发工具开发的情况。不同开发工具间的交互,往往造成了应用系统的低效率运行。如果能将主要逻辑运算方法在数据库中编译和保存,将有利于系统整体运行效率的提升。
  
  2、对语句执行和结果提取的优化
  
  受Oracle内部机制影响,不同的SQL语句,其执行过程的组合也是多种多样。因此,在优化SQL语句的过程中,有诸多因素需要考虑。
  首先,是在开发过程中,需要避免无计划的全表扫描。全表扫描,是在数据库中,对无索引的表进行查询。全表扫描,会消耗大量的服务器资源,因为数据库服务器会搜寻表的每一条记录,直到所有符合给定条件的记录返回为止。尤其是在航空结算系统或者金融行业的系统,因为主要数据库表的数据量动辄达到千万级,一旦对这些表进行全表扫描,会引起数据库资源被大量占用,从而使得应用性能大幅下降。因此,在实际开发过程中,要基于业务需要,尽量设计好表的结构,避免没有必要的全表查询动作。
  其次,开发人员要妥善管理好一类语句,即包含视图的SQL语句。由于数据已经存在于实体表集合中,对于应用程序主要逻辑运算、系统提交物的生成,尤其是诸多报表的生成,需要建立大量视图,以获得两张或两张以上表的联合数据集。在Oracle中运行包含视图的SOL语句,优化器一般会有两种执行查询的方法:其一是在解决视图后执行查询,另外一种是把视图文本本身集成到查询里去。第一种方法经常会导致查询语句性能的下降,下降程度取决于所涉及表的相对大小,涉及表的结构越复杂、记录越多,对性能的影响程度越大。如果是视图集成到查询中去,除了查询的条件本身可以应用于视图中,还可以直接使用中间结果集,也被称为结果子集。这里有一点需要注意的是,如果视图本身包含集合的操作,例如Group by、SUM、COUNT或者DISTINCT等动作,则不适用于此类方法。
  最后,是其他一些在实战中积累的,可能提高数据库性能的经验。从本质上来讲,数据库效率变低来源于数据量的增加。有效地分流查询数据量可以使效率得到显著提升。这就要提到对数据进行必要的归档操作。一般根據具体业务需要和服务要求,在线数据的最长保留期限不会超过24个月,而在线长记录的保留时限会更短。为提升系统整体运行效率,应及时将过期(超出业务要求的)在线长记录从生产表中移除,转而以短记录的方式保存在数据库的历史表中以便日后查询,而这些在线短记录,也应及时从在线数据库中移出,最终根据具体业务要求,保存在相应的文件服务器或磁盘阵列中。
  将在线数据量稳定在一个固定的水平后,还需要为访问频繁且数据相对稳定的表创建充分并且符合业务需要的索引。Oracle会在语句运行前,查找使消费最低的索引加以引用,从而避免更多的扫描时间。这里特别需要指出的是,单单建立索引对于很多大型数据库而言是不够的,数据库管理人员还需要定期对索引进行重建。这是因为在复杂的系统操作过程中,表中的记录会以很高的频率被修改、删除或者插入。这些操作(除了大量插入记录外)虽然不会对表本身的大小产生量级的影响,但其使用的索引空间使用量却不会因为记录的减少而降低,范围会不断增加。重建索引则解决了这一问题,那些曾被删除记录使用的空间被有效回收,进而提高了数据库在空间上的利用率。
  
  参考文献:
  [1]瓮正科、王新英,Oracle8.XForWindowsNT实用教程[M],北京:清华大学出版社,1999
  [2]Oracle8性能优化和管理手册[M],北京:电子工业出版社,2000,1
其他文献
在黑龙江省帽儿山国家生态站内,在20 m的固定样地内基于规则格网调查法,采用陷阱法逐日采集2015年8月30日至11月21日的地表甲虫,以揭示气温变冷季节地表甲虫小尺度空间的逐日动
采用生物酶法提取林蛙头多糖,应用响应面法对提取工艺进行了优化,分析了提取物对大鼠降血脂的功效。结果表明:林蛙头多糖最佳提取工艺参数为:酶解温度55℃、加酶量2%、林蛙头水溶
摘要:介绍中波发射机房发射机,控制设备干扰的来源及耦合的途径,对传输线路采取干扰抑制和抗扰措施。  关键词:干扰;耦合;干扰抑制;措施  中圖分类号:NT 文献标识码:A 文章编号:1671-7597(2011)0220012-01    中波发射台多台发射机频率各不相同,在同一机房工作,辐射电磁波空中磁场强,接收发送天线集中,机房的音频信号线传输系统中存在着各种各样的干扰,工作环境非常恶劣,抑制
采用反相悬浮法,以β-环糊精、聚乙烯醇和丙烯酰胺为主要原料,制备了高吸水性树脂。分别研究了树脂在不同浓度Cl-盐、SO2-4盐,以及不同pH缓冲溶液中的吸液行为,并测定了树脂在青霉、
摘要:通过对低温环境条件下管道焊接施工措施的研究,并经工程实验,得出在低温环境条件下,影响焊接质量的因素更多的在于施工机具、焊接设备的适应性、焊工劳动防护措施的保暖性和轻便性等因素。选择适合于低温环境的施工机具、焊接设备,或者创造适合的存放和使用条件,可以提高施工机具、焊接设备的适应性;再采取有效的预热、层间保温和焊后缓冷措施后,低温环境条件下得到的焊接接头性能与常温下的相比没有明显的差别。  关
当今消防报警系统需要的及时、稳定、不断提高,并且灵活接入。从而开发出一套多路消防报警采集输出系统。主控使用ATMEL公司的Atmega16单片机,显示选取OCM240128-1液晶;多路采集选用Atmega8单片机,并采用74LS573八位锁存器用作前端采集输入并每路带有TLP521-1光耦隔离,可采集3-24V报警信号;输出报警采用Atmega8单片机控制10路HRS2H-S-DC24V-T继电
摘要:研究总结宽厚板生产过程中,在加速冷却控制技术中的辊道微加速模型的算法实现。针对钢板冷却前长度方向上温度差别较大,且呈不均匀性降低的特点,采用辊道微加速算法进行控制,补偿钢板的首尾温差,减小或消除钢板长度方向的温度梯度,控制钢板长度方向上的溫度呈均匀分布。  关键词:宽厚板;控制冷却;加速度控制;辊道微加速  中图分类号:TG156.21 文献标识码:A 文章编号:1671-7597(2011
摘要:对102国道滦河大桥维修加固工程中桥面铺装改建、板底裂缝处理、墩柱处理等部位利用环氧树脂胶液、环氧砂浆、碳纤维布等施工方法、材料要求、施工工艺进行详细说明。  关键词:维护加固;环氧树脂砂浆;碳纤维布  中图分类号:U448.223 文献标识码:A 文章编号:1671-7597(2011)0220019-01    滦河大桥2号桥位于102国道唐山境内,全长404.8米,共20孔,一联,单孔