面向大型数据处理系统的Oracle数据库性能优化技术

2013-04-29 07:48王纯子
关键词:Oracle数据库性能优化

王纯子 等

摘要:针对大型数据处理MS系统中常见的性能问题,总结出一套Oracle数据庫关键优化技术,并通过实例说明所提出方案的有效性。

关键词:大型数据处理系统 Oracle数据库 性能优化

0 引言

本文以实际研发项目为平台,选取某大型网络原始数据分析处理系统为研究对象,分析并讨论其后台Oracle数据库的性能优化技术和方法。该系统随着处理数据日益增多,常常出现吞吐量低,响应慢,数据库进程莫名挂死等诸多问题。本文针对这些问题提出一套Oracle数据库性能优化的思路和方法,并对优化前后的效果进行对比。

1 数据库性能优化的最佳时机

从以往项目的失败经验来看,在系统性能变差时才对系统进行优化已经太晚,相关研究表明,数据库应用系统的性能问题50%都是在设计阶段引入的,因此对数据库性能最有效的优化阶段在设计阶段,同时设计阶段优化能以最低的代价获取最大的收益。

2 设计及开发阶段的Oracle数据库优化技术

本文所研究系统规模庞大、架构复杂,需要对当前数据库进行重新设计。

2.1 调整数据库结构设计

设计原则如下:

①对数据资源需求非常大且交互频繁的功能模块,数据库设计时使用临时表,加快统计分析的速度。②对于基本表的设计严格遵守第三范式。③根据访问的频繁程度对相关表进行分割处理、存储冗余数据、存储衍生列、合并相关表处理等。

2.2 调整磁盘I/O

为了实现硬盘之间I/O负载均衡,减少磁盘竞争和I/O争用,应遵循如下基本原则和方法:

①访问量大的数据文件放到独立磁盘。②同一个表空间的多个数据文件放到不同磁盘。③为索引创建单独表空间,并将表和索引分开在不同的表空间。④创造用户表空间,与系统表空间分开磁盘存放;⑤创建回滚段专用的表空间。⑥创建临时表空间用于排序操作。⑦Oracle文件和操作系统文件尽可能放到不同磁盘上。⑧最好使用廉价磁盘冗余阵列。

2.3 调整和有效利用SGA

正确设置SGA大小,在当前项目中,将数据缓冲区从优化前的224M增加到340M,将共享池从优化前的400M增加到450M,将日志缓冲区从优化前的100M增加到150M,并在PGA的排序区或临时表空间的临时段中进行排序操作。

2.4 恰当使用分区

Oracle中恰当的使用分区技术,可以将数据在物理上分隔开,不同分区的数据可以指定保存在处于不同磁盘上的数据文件里,可缩短查询时间,均衡I/O。在当前项目中,对4*146G的硬盘进行分区,共分为16个分区,各数据表的分区指定保存在不同的磁盘下。

2.5 索引的优化和设计

建立索引根本目的是提高查询效率,开发人员应遵守以下原则应用索引:

①选择在where子句中常用的查询列做索引字段。②选择常用来关联表的字段做索引字段。③对普通的B-Tree索引,以选择性高的字段做索引字段。④不要在经常被删除的字段上建立索引。⑤考虑建立位映射索引。⑥对where子句中函数参数的字段,建函数索引。⑦避免在索引列上进行计算。

2.6 SQL语句的优化

为提升数据库性能,在SQL优化时应严格遵循如下原则:

①尽量避免对全表扫描;②如果多个表经常被查询,尽可能使其放在同一数据块中;③使用Decode减少扫描;④使用TRUNCATA替代DELETE,用EXISTS替代IN;⑤用表连接替换EXISTS;⑥在GROUP BY前滤掉不需要的记录;⑦不要在应用中做数据校验,使用数据库的约束;⑧可过滤掉的记录条件都写在WHERE子句的末尾;⑨使用ORDER BY和GROUP BY短语;⑩慎用游标;使用快照和显形图等分布式数据库对象减少对数据库的查询次数;用where子句代替having子句。

3 实例优化

在“HP 580G7服务器+Oralce 10g数据库+应用

程序”的环境中,以单日导入50G数据的应用场景来对比验证,软件性能优化前后指标对比如下表所示,该结果证明上述Oracle数据库优化技术的有效性。

参考文献:

[1]Gaja Krishna Vaidyanatha.Oracle性能优化技术内幕[M].机械工业出版社,2002,5:284.

[2]Robert G.Freeman.Oracle DBA 必备技能详解[M].商云飞,译.北京:清华大学出版社,2006.

[3]张舒.超大型Oracle数据库的基础设计和优化设计[J].价值工程,2011(10).

基金项目:

陕西省教育厅科学研究计划专项基金(No.2013JK0189);西安工程大学教育教学改革项目(No.2012JG25)。

作者简介:

王纯子(1983-),女,陕西西安人,讲师,博士,主要研究方向:复杂系统建模、优化决策与控制。

猜你喜欢
Oracle数据库性能优化
SQL Server数据库性能优化的几点分析
Oracle数据库安全管理策略的优化
Oracle数据库应用问题与解决方案分析
Web应用的前端性能优化
一种Oracle数据库表空间监控方法
《Oracle数据库》课程教学模式探究 
WEB网站缓存性能优化
Oracle数据库性能调整与优化分析