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

时间:2022-09-29 01:44:13

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

摘要:为提高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)数量量大的表的索引问题

对于字段多,数据多的表来说,由于索引数据相对于一般数据来说,都具有更高的优先级和权限,所以建立索引未必能够使数据表的查询效率有所提高,因此在空间不足时,一般的普通数据会被移出。因此在对大型的表建立索引表时,可能会完全占用所有的数据块空间,因此在读写数据来,就要不断地进行磁盘的访问。遇到这种情况时,可对大型表的不同分区来立索引,如果需要频繁地查询大型表,则可以不建立索引。

上一篇:支持“画中画” Android 4.1升级体验 下一篇:鼠绘达人的涂鸦生活