Oracle数据库中大型表查询优化的研究.docVIP

Oracle数据库中大型表查询优化的研究.doc

  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数据库中大型表查询优化的研究.doc

Oracle数据库中大型表查询优化的研究 作者:佚名 时间:2004-07-11 10:40 出处:互连网 责编:chinaitpower ??????????????摘要:Oracle数据库中大型表查询优化的研究   摘 要:对海量数据进行访问查询时,常常遇到系统响应时间过长,占用系统资源过多的问题。本文结合实例着重对Oracle数据库中的查询优化进行了研究,测试结果表明采用的方法是很有效的,大大缩短了测试用例表的响应时间,最后对海量数据的优化方法提出了实用性的建议。      关键词:海量数据;Oracle数据库;查询优化;数据查询      1 引 言   在直升机飞行地面数据处理平台中,需要查询历史飞行数据来进行飞行状态的模拟及其飞行事故的分析,从而对当前飞机状态进行评判。其数据量非常巨大。如何对其进行快速访问,提高系统响应时间就显得十分重要。在实际应用中,往往采用各种优化措施,使得SQL查询经过数据库优化器的处理,得到最佳的执行计划,即数据访问路径,来达到提高响应速度的目的。由于项目采用的是Oracle数据库,以下考虑对Oracle数据库进行的优化情况。      2 Oracle查询顺序及其调整   Oracle优化的一般顺序如下:环境调整(服务器、网络、磁盘)、Oracle实例调整、Oracle对象调整、Oracle SQL调整。我们的测试采用的Oracle数据表容量为50 M,记录条数为50万条。测试方法为:根据用户的查询要求计算得到用户需要浏览的数据记录的起止位置,然后在SQL语句中加入此位置,执行SQL语句,查询该数据表,得到用户想要浏览的记录集合。使 用的SQL语句如下:   SELECT*FROM(SELECT*FROM(SELECT*FROM BIG)WHERE ROWNUM<TOPOS ORDER BYROWNUM DESC)WHERE ROWNUM<TOPOSFROMPOS+1;   使用该SQL查询得到结果集需要5~6 s,这个响应速度难以满足用户浏览要求,因此必须对其优化以提高响应速度。我们是在假定环境调整已经完成的条件下通过对Oracle实例、对象、SQL查询语句的调整得出结论的,其中重点是对SQL语句的调整。      2.1 实例调整   首先进行Oracle实例调整。Oracle实例涉及到SGA内存区和一组Oracle后台处理进程。对Oracle实例的调整就是对SGA内存区和Oracle后台处理进程的调整。在对该问题的解决中,主要是针对SGA内存区的调整。      2.1.1 SGA内存区结构   SGA就是系统全局区,是指内存中允许多个进程相互通信的区域。在Oracle中,SGA对所有进程来说都是全局的可用的。图1为SGA结构图。   缓冲区高速缓存是SGA中为所有用户和系统进程保存数据的区域,任何数据在传递给一个调用的应域是共享的,所以多个进程可以从这片高速缓存读取同样的数据块,而不必每次都从物理磁盘中读取。             共享池是SGA中的另一个区域,其中保存着关于待执行的SQL语句的信息。他由两部分组成:数据字典高速缓存,存放从数据字典中读取的信息以用于处理SQL请求;库高速缓存,存放需要执行的SQL语句信息,包括每个SQL语句的语法分析树和执行计划。如果多个用户要执行同样的SQL语句,那么语法分析树和执行计划就可以重复利用,省去了语法分析步骤的昂贵花费。      2.1.2 调整SGA结构   一般来讲,在系统硬件支持的情况下,系统全局区越大越有利于数据库高效的运行。大的缓冲区高速缓存可以缓存更多的数据块,这样可以提高缓存命中率,节省物理磁盘读取的高昂代价;大的共享池意味着大的库高速缓存。库缓存的内存结构如图2所示。            库缓存越大,可以保存的SQL语法分析信息越多;此外,数据库中的一些对象,如表、索引、过程、触发器、软件包等也在首次执行后进驻库高速缓存。大的库缓存可以保证对这些对象的高命中率,从而节省解析和载入代价。      作为一个通用的优化原则,我们在解决该问题时,适当增大了SGA的容量,从而保证Oracle实例可以比较高效的运行。设置缓冲区高速缓存的容量为32 M,设置共享池的大小为56 M。运行rpt_lib.sql程序检查库高速缓存不足率(还没有运行该脚本),表明库缓存足够。      2.2 对象调整   这一步骤我们要对每一个Oracle对象进行调整从 而优化性能,包括对所有的存储参数进行正确的设置,尤其是对影响输入输出的参数进行设置。Pctfree,pctused,freelist参数的设置都会对SQL性能产生重要影响。      在解决该问题时,我们没有对对象的存储参数进行调整。对象的存储

文档评论(0)

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

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

1亿VIP精品文档

相关文档