《大型ORACLE数据库优化设计方案(一)》由会员分享,可在线阅读,更多相关《大型ORACLE数据库优化设计方案(一)(7页珍藏版)》请在金锄头文库上搜索。
1、大型 ORACLE数据库优化设计方案 (一)摘要本文主要从大型数据库 ORACLE环境四个不同级别的调整分析入手,分析 ORACLE的系统结构和工作机理, 从九个不同方面较全面地总结了 ORACLE数据库的优化调整方案。关键词 ORACLE数据库环境调整优化设计方案对于 ORACLE数据库的数据存取, 主要有四个不同的调整级别, 第一级调整是操作系统级包括硬件平台 ,第二级调整是 ORACLERDBMS级的调整,第三级是数据库设计级的调整 ,最后一个调整级是 SQL级。通常依此四级调整级别对数据库进行调整、优化,数据库的整体性能会得到很大的改善。下面从九个不同方面介绍 ORACLE数据库优化设
2、计方案。一 .数据库优化自由结构 OFA(OptimalflexibleArchitecture)数据库的逻辑配置对数据库性能有很大的影响 ,为此 ,ORACLE公司对表空间设计提出了一种优化结构 OFA。使用这种结构进行设计会大大简化物理设计中的数据管理。优化自由结构 OFA,简单地讲就是在数据库中可以高效自由地分布逻辑数据对象 ,因此首先要对数据库中的逻辑对象根据他们的使用方式和物理结构对数据库的影响来进行分类 ,这种分类包括将系统数据和用户数据分开、一般数据和索引数据分开、低活动表和高活动表分开等等。数据库逻辑设计的结果应当符合下面的准则: (1)把以同样方式使用的段类型存储在一起; (
3、2)按照标准使用来设计系统; (3)存在用于例外的分离区域;(4)最小化表空间冲突;(5)将数据字典分离。二、充分利用系统全局区域SGA(SYSTEMGLOBALAREA)SGA 是 oracle 数据库的心脏。用户的进程对这个内存区发送事务,并且以这里作为高速缓存读取命中的数据,以实现加速的目的。正确的SGA大小对数据库的性能至关重要。SGA包括以下几个部分:1、数据块缓冲区( datablockbuffercache)是 SGA 中的一块高速缓存,占整个数据库大小的1%-2%,用来存储从数据库重读取的数据块(表、索引、簇等),因此采用 leastrecentlyused(LRU,最近最少使
4、用 )的方法进行空间管理。2、字典缓冲区。该缓冲区内的信息包括用户账号数据、数据文件名、段名、盘区位置、表说明和权限,它也采用LRU方式管理。3、重做日志缓冲区。该缓冲区保存为数据库恢复过程中用于前滚操作。4、SQL共享池。保存执行计划和运行数据库的SQL语句的语法分析树。也采用 LRU 算法管理。如果设置过小,语句将被连续不断地再装入到库缓存,影响系统性能。另外, SGA还包括大池、 JAVA池、多缓冲池。但是主要是由上面4 种缓冲区构成。对这些内存缓冲区的合理设置,可以大大加快数据查询速度,一个足够大的内存区可以把绝大多数数据存储在内存中,只有那些不怎么频繁使用的数据,才从磁盘读取,这样就
5、可以大大提高内存区的命中率。三、规范与反规范设计数据库1、规范化范式是符合某一级别的关系模式的集合,根据约束条件的不同,一般有 1NF、2NF、3NF 三种范式。规范化理论是围绕这些范式而建立的。规范化的基本思想是逐步消除数据依赖中不合适的部分,使模式中的各关系模式达到某种程度的“分离 ”,即采用 “一事一地 ”的模式设计原则,因此,所谓规范化实质上就是概念的单一化。数据库中数据规范化的优点是减少了数据冗余, 节约了存储空间, 相应逻辑和物理的I/O 次数减少,同时加快了增、删、改的速度。但是一个完全规范化的设计并不总能生成最优的性能, 因为对数据库查询通常需要更多的连接操作,从而影响到查询的
6、速度。故有时为了提高某些查询或应用的性能而有意破坏规范规则,即反规范化。2、反规范化反规范的必要性是否规范化的程度越高越好呢?答案是否定的,应根据实际需要来决定,因为 “分离 ”越深,产生的关系越多,结构越复杂。关系越多,连接操作越频繁,而连接操作是最费时间的,在数据库设计中特别对以查询为主的数据库设计来说,频繁的连接会严重影响查询速度。所以,在数据库的设计过程中有时故意保留非规范化约束,或者规范化以后又反规范,这样做通常是为了改进数据库的查询性能,加快数据库系统的响应速度。反规范技术在进行反规范设计之前, 要充分考虑数据的存取需求, 常用表的大小、特殊的计算、数据的物理存储等。常用的反规范技
7、术有合理增加冗余列、派生列,或重新组表几种。反规范化的好处是降低连接操作的需求、降低外码和索引数目,减少表的个数,从而提高查询速度,这对于性能要求相对较高的数据库系统来说,能有效地改善系统的性能,但相应的问题是可能影响数据的完整性,加快查询速度的同时降低修改速度。3、数据库设计中的优化策略数据应当按两种类别进行组织:频繁访问的数据和频繁修改的数据。对于频繁访问但是不频繁修改的数据,内部设计应当物理不规范化。对于频繁修改但并不频繁访问的数据,内部设计应当物理规范化。比较复杂的方法是将规范化的表作为逻辑数据库设计的基础,然后再根据整个应用系统的需要,物理地非规范化数据。规范与反规范都是建立在实际的
8、操作基础之上的约束,脱离了实际两者都没有意义。只有把两者合理地结合在一起,才能相互补充,发挥各自的优点。四、合理设计和管理表1、利用表分区分区将数据在物理上分隔开,不同分区的数据可以制定保存在处于不同磁盘上的数据文件里。这样,当对这个表进行查询时,只需要在表分区中进行扫描, 而不必进行 FTS(FullTableScan,全表扫描 ),明显缩短了查询时间,另外处于不同磁盘的分区也将对这个表的数据传输分散在不同的磁盘 I/O,一个精心设置的分区可以将数据传输对磁盘I/O 竞争均匀地分散开。2、避免出现行连接和行迁移在建立表时,由于参数pctfree 和 pctused 不正确的设置,数据块中的数
9、据会出现行链接和行迁移,也就是同一行的数据不保存在同一的数据块中。如果在进行数据查询时遇到了这些数据,那么为了读出这些数据,磁头必须重新定位,这样势必会大大降低数据库执行的速度。因此,在创建表时,就应该充分估计到将来可能出现的数据变化,正确地设置这两个参数,尽量减少数据库中出现行链接和行迁移。3、控制碎片碎片 (fragmentation) 是对一组非邻接的数据库对象的描述。碎片意味着在执行数据库的功能时要耗费额外的资源(磁盘I/O,磁盘驱动的循环延迟,动态扩展,链接的块等) ,并浪费大量磁盘空间。当两个或多个数据对象在相同的表空间中,会发生区间交叉。在动态增长中,对象的区间之间不再相互邻接。
10、为了消除区间交叉将静态的或只有小增长的表放置在一个表空间中,而把动态增长的对象分别放在各自的表空间中。在 createtable、createindex、createtablespace、createcluster 时,在 storage 子句中的参数的合理设置,可以减少碎片的产生。4、别名的使用别名是大型数据库的应用技巧,就是表名、列名在查询中以一个字母为别名,查询速度要比建连接表快1.5 倍。5、回滚段的交替使用由于数据库配置对应用表具有相对静止的数据字典和极高的事务率特点。而且数据库的系统索引段、数据段也具有相对静止,并发现在应用中最高的负荷是回滚段表空间。把回滚段定义为交替引用,这样就达到了循环分配事务对应的回滚段,可以使磁盘负荷很均匀地分布。