论文部分内容阅读
摘要:Oracle数据库系统性能调整是一个系统工程,涉及的方面很多。在实际应用中,应根据具体情况采用适当的优化策略。该文从性能优化的基本概念出发,分析了数据库系统性能评价指标,总结了数据库性能优化的主要方面。
关键词:Oracle;数据库;性能;优化
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2008)29-0289-02
The Adjustment and Optimization of the Oracle Database Performance
ZHANG Jun-feng
(Liaoning University of International Business and Economics,DaLian 116052,China)
Abstract: The Oracle database system performance adjustment is a systems engineering,involves variously.In practical application,we should use the suitable optimized strategy according to the special details. This article first elaborated the basic concept of performance optimizes,next has analyzed the performance appraisal target of database system,finally summarized the principal aspects which the database performance optimizes.
Key words: Oracle; database; performance; optimization
1 引言
Oracle作为一个功能极其强大且灵活的关系型数据库系统,以其高可靠性、高安全性,可兼容性,广泛应用于各大企业。在一个数据库应用系统的设计与实施过程中,数据库性能优化的好坏会影响到整个应用系统能否正常运转。如何调整服务器和数据库性能,如何使有限的计算机系统资源为更多的用户服务,就显得非常重要。
2 性能调整与优化概述
性能调整通过优化应用程序、修改系统参数、改变系统配置来改变系统性能。性能调整包括对硬件配置、操作系统与关系型数据库管理系统配置,以及对访问这些组件的应用的详细分析与优化。在一个系统的生命周期内,对系统进行调整,想利用较少的人力、物力而能够收到较好的收益的话,最好在系统的设计和开发期内进行。
性能优化是指进行有目的地调整组件以改善性能,使得数据库的吞吐量最大限度地增加,相应的响应时间达到最小化。数据库性能优化的基本原则是:通过尽可能少的磁盘访问获得所需要的数据。对于数据库性能的优化,最好的时期是在系统的设计和开发阶段,尽量避免在一系统成型之后再进行优化。在设计阶段进行数据库性能优化的成本最低,收益最大。
3 数据库系统性能评价指标
数据库系统性能会随着环境的不同而有差异,并受应用程序、体系结构和资源、服务器以及并发活动的具体情况影响。数据库系统性能的判定标准依赖于性能衡量的研究。通常认为评价oracle数据库性能的指标主要有系统吞吐量、数据库用户响应时间、数据库命中率、内存使用情况以及所需的磁盘I/O量。
3.1 系统吞吐量
吞吐量是指单位时间内数据库完成的SQL语句数目,以每秒钟的事务量(tPs)表示。对某些特定的系统配置而言,系统调整最重要的目的可能就是对系统吞吐量的调整。
3.2 用户响应时间
响应时间是指用户从提交SQL语句开始到获得结果集的第一行所需要的时间,是应用做出反应的时间,以毫秒或秒表示。响应时间通常也称为用户收到查询正被处理的直观确认时刻所感知的时间长度。
在任何一个系统中,吞吐量和响应时间作为调整目标通常是互相对立的。若响应时间长,吞吐量或许高;吞吐量低,响应时间或许短。
3.3 数据库命中率
oracle用户进程所需的所有数据都是经过缓冲区高速缓存来存取的。用戶对数据的需求能否在内存中得到满足,给出快速的响应,可用缓冲区高速缓存命中率来衡量。
3.4 内存使用情况
内存的使用情况主要体现在可共享内存、永久性内存和运行时内存这三者的分配使用上。
3.5 磁盘I/O
数据库中发生的每个动作几乎都将产生某种类型的I/O活动,该活动可以是逻辑的,也可以是物理的。通过降低不必要的I/O开销可以增加用户任务可获得的吞吐量,缩短用户响应时间。
4 数据库性能优化的主要方面
无论哪一个数据库管理系统都会出现数据库运行效率问题,要使数据库的性能达到最大化,主要从操作系统和硬件性能、数据库结构、oracle资源配置、Oracle实例性能、SQL语句执行等方面进行,这些方面是相互依赖的。
4.1 调整与优化数据库设计
要在良好的Oracle方案中实现最优的性能,最关键的是要有一个很好的数据库设计方案。如果数据库设计本身就有问题特别是结构设计,那么再怎么对数据库进行调整和优化都达不到很好的效果。因此提高数据库应用系统的性能首先应从数据库设计开始。
数据库设计分为逻辑设计和物理设计。逻辑设计包括使用数据库组件为业务需求和数据建模,而无须考虑如何或在哪里物理存储这些数据。物理设计包括将逻辑设计映射到物理媒体上、利用可用的硬件和软件功能尽可能快地对数据进行物理访问和维护,包括索引技术。逻辑设计主要是消除冗余数据,提高数据的吞吐速度,保证数据的完整性,但对于多表之间关联查询,将会影Oracle数据库性能优化研究响其性能。因此,在物理设计时需要折中考虑,根据业务规则和关联表的数据量大小、数据项访问频度,对关联查询频繁的数据表适当提高数据冗余设计。
4.2 优化应用程序
根据统计,对网络、硬件、操作系统、数据库参数进行优化所获得的性能提升,全部加起来只占数据库系统性能提升的40%左右,其余的60%系统性能提升来自对应用程序的优化。对应用程序进行优化通常可从源代码和SQL语句这两个方面进行。
SQL语句在编写过程中的运用可以大大优化数据库的性能。在SQL语句编写过程中一般应遵循以下原则:
1) 用NOT EXISTS代替NOT IN;
2) 使用带有提示的NOT EXISTS或NOT IN代替MINUS;
3) 使用UNION ALL 代替UNION;
4) 使用WHERE代替HAVING;
5) 避免在WHERE子句中对索引子段施加函数。
另外,在SQL语句运用中,要充分利用Oracle提供的触发器、存储过程等机制来不断的优化数据库的性能。尽可能地把数据库的一些操作放在数据库服务器上进行,这样可以减少网络传输带来的瓶颈。避免将数据库服务器的数据通过网络传到客户机,然后在客户机上进行一系列的操作之后再通过网络传输到数据库服务器上,使数据库性能大大降低。
4.3 调整数据库内存分配
每一个Oracle实例是由一组Oracle后台进程和SGA(系统全局区)的一个内存区组成的。用户进程对这个内存区发送事务,并且以这里作为调整缓存读取命中的数据,以实现加速的目的。SGA使用效率会大大影响数据库系统的性能。由于SGA的缺省参数设置只适用于配置很低的计算机,因此,应根据数据库运行状况重新调整SGA的大小。内存分配是在信息系统运行过程中优化配置的,应在检查数据库文件的物理调整和磁盘 I/O之前进行调整。
初始化参数文件中的一些参数对SGA 的大小有决定性的影响。DB - BLOCK - BUFFERS 参数是SGA 大小和数据库性能的最重要的决定因素。该值较高,可以提高系统的命中率,减少I/O。
Oracle SGA中共享池部分由库高速缓存、字典高速缓存及其他一些用户和服务器会话信息组成,共享池是最大的消耗成分。调整SGA各个结构的大小,可以极大地提高系统的性能。
4.4 调整与优化磁盘I/O
数据库的数据最终要存储在物理磁盘上。磁盘I/O操作是数据库性能最重要的方面,它是系统消耗最大的oracle数据库操作。为了避免与I/O相关的性能瓶颈,监控磁盘I/O并对其进行调整非常重要。影响磁盤I/O的性能的主要原因有磁盘竞争、I/O次数过多和数据块空间的分配管理。
我们可将数据文件、事务日志文件分别存放在磁盘阵列的不同磁盘上,减少对数据库的数据文件及事务日志文件的竞争。还应把一个应用的表数据和索引数据分散存放不同表空间上,并且尽量把不同类型的表空间存放在不同磁盘上,这样就消除了表数据和索引数据的磁盘竞争。从而有效地改善了服务器的磁盘I/O,提高了系统的性能。
4.5 配置和调整操作系统性能
Oracle数据库服务器的整体性能很大程度上依赖于操作系统的性能,如果操作系统不能提供优越的性能,那么无论怎么调整数据库也不能发挥其应有的性能。
实施操作系统级调整的主要目的是减少内存交换和分页,使SGA可留驻内存。如果为Oracle分配更多的内存需要以增加系统的换页和交换为代价,那么这种方法不仅不会产生理想的效果,相反还会影响数据库的性能。
1) 为Oracle规划系统资源
为Oracle调整操作系统的目的是为实例提供足够的资源。将计算机可用资源分配给Oracle服务器的原则是:尽可能使Oracle服务器使用资源最大化,特别在C/S中尽量让服务器上所有资源都来运行Oracle服务。操作系统必须为Oracle提供以下资源:能容纳SGA的足够内存、能容纳用户进程的足够内存、使操作系统能实现其自身功能的足够内存、使Oracle能完成其功能的足够内存、避免换页和交换。如果系统不能提供这些内存资源,那么就可能引起严重的性能问题。
2) 调整计算机系统中的内存配置
多数操作系统使用虚似内存来扩大内存,它实际上属于磁盘空间。当实际的内存空间不能满足应用软件的要求时,操作系统就将这部分的磁盘空间与内存中的信息进行页面替换,这将引起大量的磁盘I/O操作,使整个服务器的性能下降。
5 结束语
Oracle数据库性能调整与优化非常重要,在应用系统的运行过程中,会有许多变化,需要根据实际情况,对系统进行适时的调整,使相关应用的性能得到改善。由于应用系统的复杂性较高,很难将参数调整到使应用系统的所有环节性能达到最优。在数据库建立时,若能根据应用的需要合理设计分配表空间以及存储参数、内存使用初始化参数,对以后的数据库性能有很大的益处。
参考文献:
[1] 何月顺,丁秋林.调整优化Oracle9i数据库的性能[J].计算机应用与软件.2004,21(6):10-11.
[2] 王晓春,赵霎,张岩.Windows平台上Oracle数据库的系统性能优化[J].计算机工程.2004,30(09):79-81.
[3] 童有奎.浅谈ORACLE数据库系统性能优化方案[J].计算机应用,2005(3):25-26.
[4] 张韬.浅析Oracle数据库的性能优化[J].中国科技信息,2005(5):17.
关键词:Oracle;数据库;性能;优化
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2008)29-0289-02
The Adjustment and Optimization of the Oracle Database Performance
ZHANG Jun-feng
(Liaoning University of International Business and Economics,DaLian 116052,China)
Abstract: The Oracle database system performance adjustment is a systems engineering,involves variously.In practical application,we should use the suitable optimized strategy according to the special details. This article first elaborated the basic concept of performance optimizes,next has analyzed the performance appraisal target of database system,finally summarized the principal aspects which the database performance optimizes.
Key words: Oracle; database; performance; optimization
1 引言
Oracle作为一个功能极其强大且灵活的关系型数据库系统,以其高可靠性、高安全性,可兼容性,广泛应用于各大企业。在一个数据库应用系统的设计与实施过程中,数据库性能优化的好坏会影响到整个应用系统能否正常运转。如何调整服务器和数据库性能,如何使有限的计算机系统资源为更多的用户服务,就显得非常重要。
2 性能调整与优化概述
性能调整通过优化应用程序、修改系统参数、改变系统配置来改变系统性能。性能调整包括对硬件配置、操作系统与关系型数据库管理系统配置,以及对访问这些组件的应用的详细分析与优化。在一个系统的生命周期内,对系统进行调整,想利用较少的人力、物力而能够收到较好的收益的话,最好在系统的设计和开发期内进行。
性能优化是指进行有目的地调整组件以改善性能,使得数据库的吞吐量最大限度地增加,相应的响应时间达到最小化。数据库性能优化的基本原则是:通过尽可能少的磁盘访问获得所需要的数据。对于数据库性能的优化,最好的时期是在系统的设计和开发阶段,尽量避免在一系统成型之后再进行优化。在设计阶段进行数据库性能优化的成本最低,收益最大。
3 数据库系统性能评价指标
数据库系统性能会随着环境的不同而有差异,并受应用程序、体系结构和资源、服务器以及并发活动的具体情况影响。数据库系统性能的判定标准依赖于性能衡量的研究。通常认为评价oracle数据库性能的指标主要有系统吞吐量、数据库用户响应时间、数据库命中率、内存使用情况以及所需的磁盘I/O量。
3.1 系统吞吐量
吞吐量是指单位时间内数据库完成的SQL语句数目,以每秒钟的事务量(tPs)表示。对某些特定的系统配置而言,系统调整最重要的目的可能就是对系统吞吐量的调整。
3.2 用户响应时间
响应时间是指用户从提交SQL语句开始到获得结果集的第一行所需要的时间,是应用做出反应的时间,以毫秒或秒表示。响应时间通常也称为用户收到查询正被处理的直观确认时刻所感知的时间长度。
在任何一个系统中,吞吐量和响应时间作为调整目标通常是互相对立的。若响应时间长,吞吐量或许高;吞吐量低,响应时间或许短。
3.3 数据库命中率
oracle用户进程所需的所有数据都是经过缓冲区高速缓存来存取的。用戶对数据的需求能否在内存中得到满足,给出快速的响应,可用缓冲区高速缓存命中率来衡量。
3.4 内存使用情况
内存的使用情况主要体现在可共享内存、永久性内存和运行时内存这三者的分配使用上。
3.5 磁盘I/O
数据库中发生的每个动作几乎都将产生某种类型的I/O活动,该活动可以是逻辑的,也可以是物理的。通过降低不必要的I/O开销可以增加用户任务可获得的吞吐量,缩短用户响应时间。
4 数据库性能优化的主要方面
无论哪一个数据库管理系统都会出现数据库运行效率问题,要使数据库的性能达到最大化,主要从操作系统和硬件性能、数据库结构、oracle资源配置、Oracle实例性能、SQL语句执行等方面进行,这些方面是相互依赖的。
4.1 调整与优化数据库设计
要在良好的Oracle方案中实现最优的性能,最关键的是要有一个很好的数据库设计方案。如果数据库设计本身就有问题特别是结构设计,那么再怎么对数据库进行调整和优化都达不到很好的效果。因此提高数据库应用系统的性能首先应从数据库设计开始。
数据库设计分为逻辑设计和物理设计。逻辑设计包括使用数据库组件为业务需求和数据建模,而无须考虑如何或在哪里物理存储这些数据。物理设计包括将逻辑设计映射到物理媒体上、利用可用的硬件和软件功能尽可能快地对数据进行物理访问和维护,包括索引技术。逻辑设计主要是消除冗余数据,提高数据的吞吐速度,保证数据的完整性,但对于多表之间关联查询,将会影Oracle数据库性能优化研究响其性能。因此,在物理设计时需要折中考虑,根据业务规则和关联表的数据量大小、数据项访问频度,对关联查询频繁的数据表适当提高数据冗余设计。
4.2 优化应用程序
根据统计,对网络、硬件、操作系统、数据库参数进行优化所获得的性能提升,全部加起来只占数据库系统性能提升的40%左右,其余的60%系统性能提升来自对应用程序的优化。对应用程序进行优化通常可从源代码和SQL语句这两个方面进行。
SQL语句在编写过程中的运用可以大大优化数据库的性能。在SQL语句编写过程中一般应遵循以下原则:
1) 用NOT EXISTS代替NOT IN;
2) 使用带有提示的NOT EXISTS或NOT IN代替MINUS;
3) 使用UNION ALL 代替UNION;
4) 使用WHERE代替HAVING;
5) 避免在WHERE子句中对索引子段施加函数。
另外,在SQL语句运用中,要充分利用Oracle提供的触发器、存储过程等机制来不断的优化数据库的性能。尽可能地把数据库的一些操作放在数据库服务器上进行,这样可以减少网络传输带来的瓶颈。避免将数据库服务器的数据通过网络传到客户机,然后在客户机上进行一系列的操作之后再通过网络传输到数据库服务器上,使数据库性能大大降低。
4.3 调整数据库内存分配
每一个Oracle实例是由一组Oracle后台进程和SGA(系统全局区)的一个内存区组成的。用户进程对这个内存区发送事务,并且以这里作为调整缓存读取命中的数据,以实现加速的目的。SGA使用效率会大大影响数据库系统的性能。由于SGA的缺省参数设置只适用于配置很低的计算机,因此,应根据数据库运行状况重新调整SGA的大小。内存分配是在信息系统运行过程中优化配置的,应在检查数据库文件的物理调整和磁盘 I/O之前进行调整。
初始化参数文件中的一些参数对SGA 的大小有决定性的影响。DB - BLOCK - BUFFERS 参数是SGA 大小和数据库性能的最重要的决定因素。该值较高,可以提高系统的命中率,减少I/O。
Oracle SGA中共享池部分由库高速缓存、字典高速缓存及其他一些用户和服务器会话信息组成,共享池是最大的消耗成分。调整SGA各个结构的大小,可以极大地提高系统的性能。
4.4 调整与优化磁盘I/O
数据库的数据最终要存储在物理磁盘上。磁盘I/O操作是数据库性能最重要的方面,它是系统消耗最大的oracle数据库操作。为了避免与I/O相关的性能瓶颈,监控磁盘I/O并对其进行调整非常重要。影响磁盤I/O的性能的主要原因有磁盘竞争、I/O次数过多和数据块空间的分配管理。
我们可将数据文件、事务日志文件分别存放在磁盘阵列的不同磁盘上,减少对数据库的数据文件及事务日志文件的竞争。还应把一个应用的表数据和索引数据分散存放不同表空间上,并且尽量把不同类型的表空间存放在不同磁盘上,这样就消除了表数据和索引数据的磁盘竞争。从而有效地改善了服务器的磁盘I/O,提高了系统的性能。
4.5 配置和调整操作系统性能
Oracle数据库服务器的整体性能很大程度上依赖于操作系统的性能,如果操作系统不能提供优越的性能,那么无论怎么调整数据库也不能发挥其应有的性能。
实施操作系统级调整的主要目的是减少内存交换和分页,使SGA可留驻内存。如果为Oracle分配更多的内存需要以增加系统的换页和交换为代价,那么这种方法不仅不会产生理想的效果,相反还会影响数据库的性能。
1) 为Oracle规划系统资源
为Oracle调整操作系统的目的是为实例提供足够的资源。将计算机可用资源分配给Oracle服务器的原则是:尽可能使Oracle服务器使用资源最大化,特别在C/S中尽量让服务器上所有资源都来运行Oracle服务。操作系统必须为Oracle提供以下资源:能容纳SGA的足够内存、能容纳用户进程的足够内存、使操作系统能实现其自身功能的足够内存、使Oracle能完成其功能的足够内存、避免换页和交换。如果系统不能提供这些内存资源,那么就可能引起严重的性能问题。
2) 调整计算机系统中的内存配置
多数操作系统使用虚似内存来扩大内存,它实际上属于磁盘空间。当实际的内存空间不能满足应用软件的要求时,操作系统就将这部分的磁盘空间与内存中的信息进行页面替换,这将引起大量的磁盘I/O操作,使整个服务器的性能下降。
5 结束语
Oracle数据库性能调整与优化非常重要,在应用系统的运行过程中,会有许多变化,需要根据实际情况,对系统进行适时的调整,使相关应用的性能得到改善。由于应用系统的复杂性较高,很难将参数调整到使应用系统的所有环节性能达到最优。在数据库建立时,若能根据应用的需要合理设计分配表空间以及存储参数、内存使用初始化参数,对以后的数据库性能有很大的益处。
参考文献:
[1] 何月顺,丁秋林.调整优化Oracle9i数据库的性能[J].计算机应用与软件.2004,21(6):10-11.
[2] 王晓春,赵霎,张岩.Windows平台上Oracle数据库的系统性能优化[J].计算机工程.2004,30(09):79-81.
[3] 童有奎.浅谈ORACLE数据库系统性能优化方案[J].计算机应用,2005(3):25-26.
[4] 张韬.浅析Oracle数据库的性能优化[J].中国科技信息,2005(5):17.