星论文网欢迎您的来访,本中致力于各类论文代写,论文发表,代写代发论文服务

想快速发表职称论文找星论文网
当前位置:星论文网论文资料->理工论文->计算机论文

Oracle数据库高性能优化设计方法初探

分享到:
作者:代写论文  来源:星论文网  发布时间:2012-10-11 10:33:00

  摘要:为提高Oracle数据库的性能,该文通过对数据库的工作原理和系统主要结构的分析,从数据库的优化可变结构、SGA的使用、数据库表的设计、索引的使用等六个方面的综合阐述,总结了Oracle数据库高性能优化设计的方法。
  关键词:Oracle;数据库;优化;设计
  中图分类号:TP271文献标识码:A文章编号:1009-3044(2012)23-5505-03
  The Method of Oracle Database Performance Optimization Design
  QIN Yan
  (Sichuan Staff University of Science and Technology, Chengdu 610101, China)
  Abstract: In order to improve the performance of Oracle database, based on the analysis ing of the working principle and system structure of the database, comprehensive elaborate six point including the database optimization of variable structure, the use of SGA, database de? sign, index using and so on, summed up the Oracle database performance optimization design method.
  Key words: Oracle; database; optimize; design
  随着信息社会与计算机网络的高速发展,数据库作为人们储存数据的重要工具,其规模也随之不断的扩大,此时对数据库系统的性能要求也越来越高。因此,如何设出一个满足用户需求的优化的数据库,如何尽量地减少数据库的存储空间,如何提高查询速度,不仅是目前每个DBA人员对数据库优化,而且也是数据库设计人员、应用的开发人员需要重点掌握的关键技能。
  Oracle数据库依靠其在处理大型数据时的高性能,而成为商业领域应用最广泛和最流行的的数据库平台,随着用户数的不断增长,已成为大型商业应用系统的御用后台数据管理系统。但在实际应用过程中,由于对Oracle本身的不熟悉,无法充分地发挥Ora cle在处理少量数据的优越性。数据库设计的性能是否优化,会直接影响数据库应用系统的正常运行和工作效率,该文从数据库设计的性能优化着手,从数据库系统内存优化和SQL语句使用优化等方面进行全面阐述。
  1 Oracle数据库高性能设计方法
  该文通过六个不同的侧面,为Oracle数据库高性能优化设计提供参考方法。
  1.1优化可变结构OFA
  数据库的设计中的逻辑配置决定着其性能是否优化,因此在对表的空间设计时Oracle提供了一种优化结构,即OFA(Optimal flexible Architecture),第一步是根据数据的用途以及使用对象进行归类,如可区分为用户数据与系统数据,索引数据与一般数据,高活动表与低活动表。
  在进行数据库的逻辑数据配置时就遵循以下原则:
  1)将使用方式相同的段类型存储相同位置;2)设计系统时以Oracle提供的标准方式为基准;3)创建分离区域,以用于处理例外;4)将表空间的冲突设置为最小化;5)分享数据字典。
  1.2合理设计和管理数据表
  数据进行物理的分享可能通过表分区功能来实现,也就是可以将不同分区的数据以数据文件的方式储存在不同的磁盘中。例如:对于一张含有大量数据的表,根据其中的一个字段进行表分区,在查询的时候即可对某一个表分区进行查询,而省去了全表扫描的麻烦,也大大缩短了查询的时间,数据在不同的磁盘进行输入和输出,可有效在进行数据管理与查询。
  1.3有效地使用索引
  索引的主要功能是提高数据库数据的查询速度,表中的逻辑值可能通过索引映射到某一行,所以数据的数理位置能够通过这个映射关系很快被定位。在创建索引时,要考虑到这个索引能够最大限度地应用到where、group by、order by等子句中。
  1)少建或不建索引的场景表记录的数据少。
  如果一个表仅有10来条记录,如果采用索引功能去访问数据,首先需要访问索引表,然后再通过索引表访问记录,而一般情况下,索引表和数据表没有保存在同一数据块,因此此时至少需要对数据库进行两次读取和数据返回。而如果不用索引,Oracle则可一次性将所需的数据读出,速度显而易见。
  经常进行记录的添加、修改、删除操作,而不要求查询效率。
  数据重复率高,而且字段分布比较平均。
  例如一个表有1万行数据记录,而其中一个字段X只有a和b两种值,且每个值的分布概率都为50%,则对这种表X字段建立索引时没有太大意义。
  需要经常与主字段一起组合查询,但主字段索引值比较多的情况。
  如水费表经常按收费序号、用户编号、查表日期、年月日、操作标志来具体查询某一笔费用,如果将这些需要查询的字段都建立在一个索引中,则会大大增加数据更新的时间,实际情况是,只要按照收费的序号建立索引,则数据量就会大大减少,而按照其它字段查询时也不会影响效率。
  2)数量量大的表的索引问题
  对于字段多,数据多的表来说,由于索引数据相对于一般数据来说,都具有更高的优先级和权限,所以建立索引未必能够使数据表的查询效率有所提高,因此在空间不足时,一般的普通数据会被移出。因此在对大型的表建立索引表时,可能会完全占用所有的数据块空间,因此在读写数据来,就要不断地进行磁盘的访问。遇到这种情况时,可对大型表的不同分区来立索引,如果需要频繁地查询大型表,则可以不建立索引。  1.4合理设计数据分片
  在实际使用过程中,可能某个表会含有相当的数据量,而且还在急剧增长的情况下,为保障数据能保持比较快的响应速度,根据数据所处的时间与空间的局部性,利用横向和竖向分片进行数据表分片的设计。
  1)横向分片
  将数据表根据使用的机构或者部门拆分成N个子表,这样不同机构的数据就能够成为独立管理的表,这种情况主要适用于部门之间不需要交互,不需要进行数据共享和交换的情况。
  2)竖向分片
  将数据表以流程为标准拆分成N个表,将表中不经使用的数据移植到其它表中,如针对某个学校,可将在校生和毕业生储存在不同的数据表中,当学生毕业后,即可将相关学生信息转入到毕业生表中,由于在校生的数据信息是需要定期更新和操作的,因此这样的分片方式确保了在校生表能够控制在某个定量,进而提高查询速度。
  3)分片原则
  在表中的记录量少时,而且无需进行部门数据的频繁交换情况下,可采用竖向分片方式,这种方式能够确保逻辑配置的简单化,而且具有高可靠性,减少了管理人员的工作量。当竖向分片无法解决问题时,可引入横向分片,将需要进行数据频繁交换的部门设置为一组,保存在同一张数据表中,注意横向分片数要尽量少,以控制程序的复杂性。
  1.5 SQL语句的优化方法
  SQL优化方法主要有以下几种:
  尽量控制对数据库表的查询,即减少对系统资源的消耗,实现方式主要采用分布式数据库对象,如快照、显形图等。
  充分地使用SQL提供的共享池中已经过分析的语法树,使用非常接近或者完全相同的SQL语句实现查询,同时可实现数据在SGA的准确率大大提高。
  动态SQL是一个非常便捷好用的功能,但是动态SQL每次使用时都需要进行语法的分析,无论共享池是是否存在所需要的查询值,因此会大大影响数据库的性能,因此这个功能需要限制使用。
  尽量避免使用不带任何条件的SQL语句,由于这种语句在执行时,需要定位某一个数据块,然后按照顺序对整个数据表进行扫描,如果数据表记录多,则需要相当长的一段时间。
  屏蔽SQL语句自动提交的模式,而可采用集中一组SQL语句整体提交的方式。
  1.6复杂SQL语句的编写
  以某个学校学生的成绩管理为例一般会包括课程表(course)、学生表(student)、成绩表(score),每个表里包括的字段主要如以表1-表3所示:
  如果统计某个班级成绩都为MM的数据信息,并以下格式显示:
  解决办法是在三个表中分别查询相应的值,然后转换为最终需要的值,具体实现如下:
  方法二,SQL2,将一个表、3个值同时查出来,据不同段值,转化成3个值。
  select S_Name,max(decode(Course_ID,’语文’, Score ,null)) as Score1,
  max(decode(Course_ID,’英语’, Score , null)) as Score2,
  max(decode(Course_ID,’数学’, Score , null)) as Score3
  from Score_view where班级=’填写某个班级’
  group S_ID,S_Name
  order by S_ID
  这种方法是直接使用Decode函数,可大大提高数据查询效率。
   2结束语
  迄今为止,数据库技术发展和处理性能已成为应用系统运行的瓶颈。数据库设计与管理员需要结合多方面因素,在建立数据表时,能够根据应用系统的需求和可能出现的变化合理设计各个表和字段,以及表空间、存储的数据块空间、内存等参数。另外,数据库的性能调优是一个系统工程,涉及的诸多方面。如何才能进行有效的调整,结合其它技术实现Oracle数据库的全面优化。
  参考文献:
  [1]格林威尔.Oracle精髓[M].龚波,译.北京:机械工业出版社,2009.
  [2]谭怀远.Oracle性能分析与优化思路[M].北京:电子工业出版社,2010.
  [3]李丙洋.涂抹.Oracle.三思笔记之一步一步学Oracle[M].北京:中国水利水电出版社,2010.
  [4]秦靖,刘存勇.Oracle从入门到精通[M].北京:机械工业出版社,2011.
  [5]罗尼,刘伟琴,张格仙.Oracle Database完全参考手册[M].北京:清华大学出版社,2010.


本文TAGS:
如您需要代写代发表论文请联系QQ:800054855