Oracle是目前应用最广泛的数据库系统。一个完整的数据库系统包括系统硬件、操作系统、网络层、DBMS(数据库管理系统)、应用程序与数据,各部分之间是互相依赖的,对每个部分都必须进行合理的配置、设计和优化才能实现高性能的数据库系统。本文讨论笔者使用Oracle开发局域网中、小型数据库应用中,系统硬件的选择与使用、应用数据库系统设计与开发方面的一些心得和建议。 应用数据库系统包含应用数据库和应用两方面的内容,应用数据库就是生产数据库,与系统数据库相对。 系统硬件的选择与使用 与数据库系统密切相关的硬件主要有CPU、内存、集群、存储设备等,这里不对集群进行讨论。 1、CPU CPU的数目和速度直接影响数据库操作的速度,Oracle数据库提供并行查询选项,允许SQL操作以协同方式在多个CPU上执行,可以很大程度的发挥多CPU的性能。 为系统添加CPU前,首先要对应用程序的SQL代码做优化,提高应用程序的效率,质量低劣的应用可能会引起CPU资源的无谓的消耗;其次,要了解操作系统对CPU数目的限制及系统的可扩展性。在系统CPU资源已定的情况下,要对各类应用进行分析,在保证关键应用正常运行的前提下,尽可能将大量占用CPU资源的应用放在系统相对空闲的时候进行。 良好的工作调度可以有效减少对CPU的竞争使用,加快系统的响应时间。 2、内存 数据库系统中,应保证有足够大的内存。在UNIX系统中,如果系统的物理内存小于1GB,可将交换区的大小设为内存的4倍,否则,可设为内存的2倍,交换区要放在磁盘速度最快的硬盘上。 Oracle的SGA区大小直接关系到数据库操作的性能,一般来说,SGA区的大小可设为系统可用内存的55%到57%,SGA区过多占用系统内存反而会降低性能。在应用系统运行中,应定期监测系统的内存使用情况,对关键应用进行分析,根据应用适时调整SGA区各部分的大小。 Oracle9i可在不重新启动数据库的情况下修改SGA区的参数,实时改变SGA区的大小。 3、存储设备 在网络时代,信息资源的积累和广泛应用对数据存储技术的发展提出了更大的挑战,数据存储模式从传统的总线连接模式进入了网络存储模式。但存储设备依然是硬盘、磁带(带库)、磁盘阵列,在中、小型数据库应用中传统存储模式仍占主导地位。 磁盘I/O是数据库操作的瓶颈之一,磁盘的合理选择和使用在数据库系统中显得尤为重要。在最初做数据库系统规划时,应充分考虑到系统的容量和预期的增长,尽可能为以后的扩展留足空间。在硬盘和磁盘阵列的选择与使用中,应注意以下几点: ·选择支持热插拔功能的硬盘,这样在出现硬盘Oracle平台应用数据库系统的设计与开发失败时,可以在系统正常运行的情况下更换硬盘; ·不要选择太大的硬盘,切记对Oracle应用程序,1~4GB大小的硬盘是比较合适的,最好购买大量的中小型硬盘,这样在配置RAID时可提供更大的灵活性; ·如果选用了磁盘阵列,对于Oracle数据库应用,如果经费能够支持,RAID0+1是最佳的配置方法。 在RAID5中,读操作性能得到了一定的改善,但写性能损失很大,如果某个硬盘失败,硬盘重建的工作量非常大,RAID5适用于DSS(决策支持系统)应用,对OLTP(联机事物处理)应用不太合适; ·在实现RAID时,要正确地选择分条的大小,决定分条大小的三个主要因素是:应用程序的特性(DSS、OLTP、批处理)、操作系统与数据库的数据块大小、磁盘阵列中的硬盘数目。 数据库的数据块大小应是操作系统数据块大小的�
��数倍,同样分条大小也必须是操作系统数据块大小的整数倍。如果使用裸设备,分条大小应是操作系统物理数据块的大小。分条可按照水平方向进行,也可按照垂直方向进行。水平分条跨越每个硬盘控制器进行,垂直分条跨越整个硬盘集合进行,分条集合中的成员数应不大于硬盘控制器数。 OLTP应用程序,数据访问的数据量不大,一般可选择32KB或64KB的分条大小,而DSS应用程序访问的数据量大,可考虑使用64KB、128KB或256KB的分条大小。 应用数据库的设计与开发 Oracle数据库软件安装和配置完成后,就进入了应用数据库的设计阶段,应用数据库设计包括逻辑设计与物理设计。 合理的逻辑设计会大大提高数据库的性能,增强数据库的可维护性。在设计中根据应用,抽象出实体关系模型,将实体关系图映射为标准化(数据完整、与应用无关、存储优化)的关系模型(数据库对象),当前有一些辅助工具(OracleDesigner等)来实现实体关系图到SQL代码的映射;数据库的物理设计就是数据库对象的存储设计,即如何为数据库对象分配存储空间。 在进行数据库对象的设计前,数据库的管理和开发人员对应用和应用的数据及其应用关系要有一个详尽的理解,根据应用进行数据库对象的规划和设计,大概包含以下几个方面: ·确定需建立的数据库用户,明确用户的系统权限和表空间限额,为用户设计资源限制profile; ·确定应用数据应分多少个表进行设计,各表分别属于的用户,各用户对各个表的操作权限; ·明确各表的结构,确定表的主键及约束; ·明确哪些表是应用运行的关键表,哪些是事务表; ·分析哪些表是主表,哪些表是从表,确定表和表之间的外键约束,选择合适的表作为表连接的驱动表; ·根据应用,确定在哪些表上对哪些列建立合适的索引; ·根据表和索引的设计,确定要创建的表空间和回滚段,为表空间和回滚段选择合适的磁盘,尽可能创建本地管理的表空间,减少数据库空间管理方面的工作;以上是我对于这个问题的解答,希望能够帮到大家。
阅读全文 >