- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
Oracle数据库优化研究
1 Oracle数据库概述
Oracle数据库是一个功能极其强大的数据库系统。它起始于七十年代末的关系型数据库技术。Oracle数据库的关键是怎样理解数据间的关系,然后构造反映这些关系的信息库。1984年Oracle成功地将关系型数据库转移到桌面计算机上,Oracles提供了一个完整的客户/服务器体系结构的商用DBMS。利用SQL.NET软件层,与多种操作系统支持通信协议配合,为Oracle数据库提供分布式环境,可以实现多点查询。Oracle数据库发布了革命式的行锁定模式,提高了事务的处理速度,使关系型数据库应用进入了一个全新的天地。
1992年推出的Oracle7数据库采用了自协调的多线索服务器体系结构,动态调整高速数据库服务器进程的个数。这都为构造产业化的以及企业类的应用提供了技术支持。1997年,Oracle8数据库推出。Oracle8数据库不仅允许用户以处理关系数据的方式来梳理对象数据,也可同样处理关系数据。因此,Oracle8数据库是一个紧密集成的对象关系数据库管理系统方案,对象技术和关系型数据库的结合,使用户现有Oracle7数据库应用软件无需移植,便可在Oracle8数据库上使用,Oracle数据库发展到现在的Oracle10g,它是第一款为网格计算而设计的数据库,集成了Oracle数据库管理技术的各种优势,又融入了网格计算的各种新的性能特点。
Oracle数据库系统的特点是支持大数据库、多用户的高性能事务处理,Oracle数据库具有良好的硬件环境独立性,支持各种类型的大型、中型、小型和微机系统。Oracle数据库遵守数据存取语言、操作系统、用户接口和网络通信协议的工业标准,有着更好的安全性和完整控制,并且Oracle数据库允许将处理分为数据库服务器和客户应用程序处理,所有共享的数据管理由具有数据库管理系统的计算机处理,而运行数据应用的工作站侧重于解释和显示数据。
2 数据库最优灵活体系结构OFA
OFA(Optimal Flexible Architecture)是提高Oracle数据库逻辑配置和性能的一种优化结构,使用这种结构进行设计会简化物理设计中的数据管理,可以高效自由地分布逻辑数据对象。数据库逻辑设计要遵循:①同样方式使用的段类型存储在一起;②按照标准使用来设计系统;③存在用于例外的分离区域;④最小化表空间冲突;⑤将数据字典分离。
3 系统级优化
Oracle数据库从物理结构上看,是安装在硬件服务器上的由一个个文件组成的软件系统,要确保其高效运行必须有充足的服务器资源来支撑。影响系统性能的主要问题有以下几个方面:①现有系统自身存在的缺陷或不足;②CPU不足;③内存不足;④I/O不足;⑤网络约束;⑥软件约束。在对数据库进行优化之前,应该根据实际应用需求来配置服务器硬件,选取合适的CPU型号及个数、存储容量大小等,优化网络环境,完善操作系统软件配置,为Oracle数据库提供良好的运行环境。
4 数据库级优化
4.1 数据库设计开发阶段
(1)优化应用程序结构设计:在数据库系统设计阶段对其逻辑结构和物理结构进行优化设计,系统性能可以达到最佳,系统开销最小。因为不同的应用程序体系结构所要求的数据库资源是不同的,要根据软件需求,确定应用程序采用的体系结构,是B/S、C/S还是其他体系结构。优化应用程序结构,设置合理的数据库访问模式,能极大提高数据库效率。(2)编写优质SQL语句:良好的SQL语句可以被数据库重复使用而减少分析时间,充分利用了SQL语言和Oracle特性的应用程序处理速度较快,效率较高。在进行数据库操作时,选取合适的SQL代码,能使程序更加明了,运行速度也更快。(3)优化磁盘I/O:对于数据库系统来说,磁盘I/O操作是数据库性能最重要的方面。减少磁盘I/O操作的最根本方法就是利用高速缓存存放频繁使用的数据信息,恰当使用索引和Oracle分区技术能有效节约服务器查找时间,减少磁盘操作。(4)参数优化:数据块的大小在数据库创建后不能改变,因此在设计阶段必须确定合适的数据块大小和存储参数。一般来讲,我们通常根据样例数据来确定数据块大小,而根据业务量和未来数据库发展趋势确定存储参数。
Oracle数据库参数介绍:①LICENSE-MAX-SESSION。该参数指出允许并发用户会话的最大数。若此参数为0,则不能实施并发。若并发的用户会话数已达到此极限,则只有具有RESTRICTED SESSION权限的用户才能连接到服务器。②CHECKPOINT-PROCESS。该参数根据是否要求检查点而设置成TRUE或者FALSE。当所有缓冲区的信息写到磁盘时,检查点进程(CHPT)建立一个静态的点。在归档日志文件中做一个记号表示有一个检查点发生。检查点发生在归档日志转换的时候或当达到LOG-CHECKPOINT-INTERVAL定义的块数的时候。当设置此参数为TRUE时,后台进程CHPT便可工作。在检查点期间内,若日志写进程的性能减低,则可用CHPT进程加以改善。③DB-BLOCK-SIZE。该参数表示Oracle数据库块的大小,以字节为单位,典型值为2048或4096。该值一旦设定则不能改变。它影响表及索引的FREELISTS参数的最大值。④OPTIMIZRER-MODE。若该参数的值为RULE,则ORACLE优化器选择基于规则的优化;若设置为COST,并且在数据字典中存在有统计信息,则优化器选择基于代价的优化方法进行优化。
4.2 数据库运行阶段
(1)SGA。在不影响应用系统的前提下, SGA应尽可能大,通过合理设置SHARED-POOL-SIZE和DB-BLOCK-BUFFER的值来掌握好SGA的大小。如果服务器内存为1G,那能够分配给SGA的内存大约是四五百兆,通常我们习惯于通过直观的公式化来表达这样的问题:SGA+并发执行进程数*(sort-area-size+hash-ara-size+2M)+OS使用内存<总内存*70%。(2)共享池。共享池用于缓存最近被执行的SQL语句和最近被使用的数据定义,主要包括库高速缓冲区和数据字典缓冲区。配置共享池的关键是看应该更改SHARED-POOL-SIZE还是应该使用保留池、大型池或Java池。通过查询库高速缓冲和数据字典缓冲的命中率,可以衡量共享池的效率。(3)数据库缓冲区。数据库缓冲区是SGA中最大的区,其大小设置是否合理直接跟应用系统的性能相关。通过测试我们得出结论:数据高速缓冲区的命中率最佳应保持在90%以上,当该值低于80%时服务器性能就会下降,而低于50%时则会严重影响服务器性能。(4)重做日志缓冲区。重做日志缓冲区的内存需求与数据库事务处理的数量和大小有关。重做日志缓冲池通常小于2M,过大的重做日志将减少日志文件的I/O操作,过小的重做日志缓冲区将会使日志写入过程过分繁忙。日志缓冲区的大小由LOG-BUFFER决定,必须是DB-BLOCK-SIZE的整数倍。如果失败率大于1%,则必须增大LOG-BUFF-ER的大小。
5 结束语
Oracle提供了丰富的选择环境,可以从Oracle数据库的体系结构、软件结构、模式对象以及具体的业务和技术实现出发统筹考虑,提高系统性能需要一种系统的整体方法,在对数据库进行优化时,需要对应用程序、系统和I/O子系统进行相应的优化,有目的地调整一个或多个组件,使系统满足一个或多个目标的过程。对于ORACLE来说,优化是进行有目的调整组件级,即增加吞吐量,减少响应时间。综合考虑优化方案, Oracle应用按最优的方式来存取数据,确保数据库的安全、稳定可靠。