基于ORACLE数据库应用系统的优化探讨

时间:2022-08-16 01:11:26

基于ORACLE数据库应用系统的优化探讨

【摘要】 本文通过对硬件性能、数据库系统参数以及应用程序等方面的阐述,总结了基于ORACLE数据库的应用系统的优化方法。

【关键词】 oracle数据库 应用系统 数据库优化

一、引言

某政府机关内、外网部署了大量的业务应用系统,数据库主要采用ORACLE数据库。软硬件已经使用7-8年以上,数据库每天都在更新。随着应用系统的增加和业务数据量的增长,导致整个Oracle数据库系统的性能不断下降。为了保证这些信息系统能够高效运行,需要进行性能优化调整。本文通过对硬件性能、数据库系统参数以及应用程序等方面进行有效性的操作优化,来提升业务应用系统的性能。

二、基于ORACLE数据库应用系统的优化

本文探讨的是从硬件性能、数据库、应用程序方面进行优化,以便提高Oracle数据库的性能效率,对业务应用系统进行整体优化。

2.1硬件性能的优化

硬件设计时要考虑承载能力和生命周期,同时通过调整相关的参数设置,确保硬件提供给业务应用系统充足的资源。

2.1.1服务器磁盘的优化

设定虚拟内存、检查应用软件或者驱动程序、减少桌面图标、减少字体种数、删除随机启动程序、取消背景和关闭activedesktop。关注磁盘错误信息和磁盘空间大小的变化,必要时增加磁盘容量。

2.1.2服务器CPU的优化

检查空闲期间、高峰期间以及平均的CPU利用率。建议峰值在85%以下。如果CPU的利用率过高,增加一定数量的CPU来解决利用率过高的问题。

2.1.3服务器内存的优化

改变页面文件的位置、改变页面文件的大小、禁用页面文件、清空页面文件、调整高速缓存区域的大小、监视内存以及及时释放内存空间、优化内存中的数据,并且可以采用一些优化软件来优化内存,使得缓存、内存达到一个稳定值。

2.1.4网络的优化

网络优化是指通过各种硬件或软件技术使网络性能达到我们需要的最佳平衡点。要保证网络上的带宽流量和网络的速度。应用程序有C/S , B/S模式。C/S模式应用程序的客户端应用程序之间网络吞吐量大,引起的网络I/O小,数据库性能强。

2.2数据库设计的优化

2.2.1调整数据结构的设计

开发信息系统之前要完成数据结构的设计,需要考虑是否使用Oracle数据库的分区功能,对于信息系统经常访问的数据库表是否需要建立索引等。根据使用方式和物理结构对数据库的影响,对数据库中的逻辑对象进行分类(包括将系统数据和用户数据分开、一般数据和索引数据分开、低活动表和高活动表分开等等)。数据库逻辑设计的结果应当符合如下准则:(1)把以同样方式使用的段类型存储在一起;(2)按照标准使用来设计系统;(3)存在用于例外的分离区域;(4)最小化表空间冲突;(5)将数据字典分离。

2.2.2调整数据库SQL语句

应用程序的执行最终将归结为数据库中的SQL语句执行,因此SQL语句的执行效率最终决定了Oracle数据库的性能。可以采用Oracle公司推荐使用的Oracle语句优化器(Oracle Optimizer)和行锁管理器(Row-Level Manager)来调整优化SQL语句。还可以采用下面的优化方法:

1)使用快照和显形图等分布式数据库对象,减少对数据库的查询次数,即减少对系统资源的请求;

2)尽量使用相同的或非常类似的SQL语句进行查询,充分利用SQL共享池中的已经分析的语法树,要查询的数据在SGA中命中的可能性也会大大增加。

3)避免不带任何条件的SQL语句的执行。

4)如果对有些表中的数据有约束,在建表的SQL语句用描述完整性来实现,不用SQL程序中实现。

2.2.3调整服务器内存分配

内存分配是在信息系统运行过程中优化配置的,可以根据数据库运行状况调整数据库系统全局区(SGA区)的数据缓冲区、日志缓冲区和共享池的大小。还可以调整程序全局区((PGA区)的大小。正确的SGA|、PGA大小的设置对数据库的性能至关重要。

2.2.4合理设计和管理表

1)利用表分区。分区将数据在物理上分隔开,将不同分区的数据保存在处于不同磁盘上的数据文件里。当对这个表进行查询时,只需要在表分区中进行扫描,而不必进行全表扫描,明显缩短了查询时间,同时将数据传输对磁盘I/O竞争均匀地分散开。

2)避免出现行连接和行迁移。在建表时,充分估计到将来可能出现的数据变化,正确设置pctfree和pctused参数,尽量减少数据库中出现行链接和行迁移。

3)使用别名。别名就是将表名、列名在查询中以一个字母为别名,查询速度可提升1.5倍。

2.2.5索引Index的优化设计

1)管理组织索引。索引把表中的逻辑值映射到RowID,能够快速定位数据的物理地址(大型表分区后建立分区索引),可以大大加快数据库的查询速度。

2)使用聚簇。聚簇是根据共同码值将多个表的数据存储在同一个Oracle块中,这时检索一组Oracle块就同时得到两个表的数据,从而减少需要存储的Oracle块,提高应用程序的性能。

3)ORACLE使用索引的基本的条件。where子名中的这个字段,必须是复合索引的第一个字段,且不应该参与任何形式的计算。

2.2.6多CPU并行查询PQO(Parallel Query Option)方式的利用

对于多CPU系统,考虑采用Parallel Query Option(PQO,并行查询选项)方式进行数据库操作。不仅可以在多个CPU间分配SQL语句的请求处理,当所查询的数据处于不同的磁盘时,一个个独立的进程可以同时进行数据读取。

2.3应用程序的优化

2.3.1尽量使用框架结构

应用程序的体系结构确定后,应尽量使用成熟的框架来实现。实践证明,成熟的框架开发模式可以大大提高程序效率和易用性。节省开发时间,同时使得后期系统的优化和变更更容易。最重要的是,对性能优化有很大帮助。

2.3.2数据库连接优化

1)使用直接的OLE DB数据库连接方式。通过ADO可以使用两种方式连接数据库,一种是传统的ODBC方式,一种是OLE DB方式。ADO是建立在OLE DB技术上的,为了支持ODBC,必须建立相应的OLE DB到ODBC的调用转换,而使用直接的OLE DB方式则不需转换,从而提高处理速度。

2)使用Connection Pool机制。在数据库处理中,资源花销最大的是建立数据库连接,而且用户还会有一个较长的连接等待时间。解决的办法就是复用现有的Connection,也就是使用Connection Pool对象机制,可以大大地提高系统的响应速度。

2.3.3 HQL语句的调整优化

系统在数据层使用hibernate框架,因此对hql语句进行优化也可以提高系统性能,包括:

1)尽量使用索引。

2)在多张表进行联合查询时,应注意各表的联查次序及连接方式。

3)在子查询中慎重使用IN或者NOT IN语句,使用where (NOT) exists的效果要好得多。

4)慎重使用视图的联合查询,尤其是比较复杂的视图之间的联合查询。一般对视图的查询最好都分解为对数据表的直接查询效果要好一些。

5)可以在参数文件中设置SHARED_POOL_ RESERVED_SIZE参数,这个参数在SGA共享池中保留一个连续的内存空间,连续的内存空间有益于存放大的SQL程序包。

6)注意建立索引时的列顺序。在多个列上面建立索引的时候,索引中列顺序的不同,可以导致索引的作用效果不同,对性能产生很大的影响。

例如:假设有一个索引,名字为Idx_test,包含了表中的三个值,三个列在索引中的顺序为:ID,SomeDate,SomeString,按照选择性由大到小的顺序排列(选择性大小描述了数据差异的大小)。

对于这个索引,只有在查询中的Where/Join的列按照索引中的列的顺序使用的时候才是有效的。类似下面的查询结构中是能够发挥作用的,如:

… WHERE ID = @ID AND SomeDate = @dt AND SomeString = @str

… WHERE ID = @ID AND SomeDate = @dt

… WHERE ID = @ID

如果查询是下面这样的,如:

… WHERE SomeDate = @dt

或者… SomeDate = @dt AND SomeString = @str ,那么,这个索引就不会在上面的查询中使用了,那么查询在执行的时候就会扫描整表了。

三、结束语

提高系统性能需要一种系统的整体的方法。对性能问题的考虑应贯穿于开发阶段的全过程,不应只在出现问题时才考虑性能问题。

为了保证应用系统的高效性和稳定性,本文从硬件性能、数据库系统参数以及应用程序等方面,提出了具有针对性的优化方法。基于oracle数据库应用系统的优化体现在系统设计、开发、运行等各个阶段,需要程序员和数据库管理员认真分析问题,对数据库及应用程序等进行调整和性能调节,从而保证应用系统的高效、稳定运行。

参 考 文 献

[1] 李学忠.ORACLE数据库的优化使用.电子工艺技术,2003.24(5):219-224.

[2] 贾小恒.浅析Oracae数据库的优化.软件时空,2011.11.

[3] 符浩.ORACLE数据库优化理论探讨.科技资讯,2012.11.

[4] 陈建云,林春艳,曾昊川. ORACLE应用系统数据库的优化探讨.信息安全与技术,2014.12.

上一篇:铁路通信工程施工项目的质量控制措施 下一篇:移动水下网络的协作跟踪研究