ORACLE数据库系统性能优化探析

时间:2022-05-29 03:17:07

ORACLE数据库系统性能优化探析

摘 要:Oracle 数据库是当前应用最广泛的大型关系数据库之一,其性能直接关系到整个应用系统的运行效率。本文主要介绍了通过对数据库的硬件优化,操作系用参数的设置,用户SQL质量优化来提高数据库性能。

关键词:硬件优化;SQL质量优化;操作系用参数设置

1. 引言

Oracle数据库是由SUN公司开发的一种具有高稳定性、高安全性、高兼容性的大型关系型数据库,目前在通信、医疗、教育等行业得到了广泛应用,已逐渐成为企业信息化建设的重要数据库平台。Oracle数据库在为各种应用提供服务的同时,也保存并管理了大量的业务数据。要使Oracle数据库适应应用需求,并能有效管理和利用由各业务系统产生积累的数据,对Oracle数据库优化显得尤为重要。

2. 影响数据库性能原因

Oracle 数据库系统性能是否能够充分发挥主要依赖于数据库服务器性能、数据库配置、网络环境、应用程序性能等几个主要方面。[1]

(1)数据库服务器性能

数据库服务器是系统的关键因素,它的性能决定了整个数据库系统的性能。数据库服务器的性能主要取决于服务器上运行的操作系统以及服务器的硬件配置情况,相同环境下服务器的性能越好,数据库的性能也就越好。

(2)数据库配置

数据库配置情况直接决定了数据库的性能优劣,是数据库性能优化的核心也是最主要的部分。主要包括共享池的设置、磁盘管理的设置、系统参数设置。

(3)网络环境

应用程序与数据库服务器之间需要通过网络来进行交互,网络的性能,特别是网络输入输出的带宽对整个系统性能有重要的影响。

(4)应用程序实现。

应用的交互方法对数据库性能也有很大的影响,特别是SQL语句的应用、数据库连接方式的选择、数据库端程序设计以及数据库对象的使用情况等,都影响系统的执行效率。本文主要讨论通过对数据库的硬件优化,操作系用参数的设置,用户SQL质量优化来提高数据库性能。[3]

3. 优化方式

(1)通过数据库硬件的优化

CPU:在任何机器中CPU的数据处理能力往往是衡量计算机性能的一个标志,而ORACLE是一个提供并行能力的数据库系统,在CPU方面的要求就比较高了,如果运行队列数目超过了CPU处理的数目,性能就会下降,通过适当增加CPU的数量可以解决队列阻塞的问题;

内存:衡量机器性能的另外一个指标,内存和我们在建数据库中的交换区进行数据的交换,读数据时,磁盘I/O必须等待物理I/O操作完成,在出现ORACLE的内存瓶颈时,我们第一个要考虑的是增加内存,I/O的响应时间是影响ORACLE性能的主要参数;

网络环境:NET*SQL负责数据在网络上的来往,大量的SQL会令网络速度变慢。10M的网卡和100的网卡就对NET*SQL有非常明显的影响,交换机等网络设备的性能对网络的影响也很明显。所以优化网络环境是提交SQL交互的一个重要手段;[4]

(2)操作系统参数设置

DBA可以通过对操作系统以下参数做调整来优化Oracle数据库

bufpages 对buffer空间不按静态分配,采用动态分配的方式

dbc_max_pct 加大最大动态buffer空间所占物理内存的百分比,以满足应用系统的读写命中率的需要

desfree 提高开始交换操作的最低空闲内存下限,保障系统的稳定性,防止出现不可预见的系统崩溃

fs_async 允许进行磁盘异步操作,提高CPU和磁盘的利用率

lotsfree 提高系统解除换页操作的空闲内存的上限值,保证应用程序有足够的可用内存空间。

maxssiz_64bit 加大最大堆栈段的大小(64位操作系统)

Minfree 提高停止交换操作的自由内存的上限

Shmem 允许进行内存共享,以提高内存的利用率

Shmmax 设置最大共享内存段的大小,完全满足目前的需要

Timeslice 由于系统的瓶颈主要反映在磁盘I/O上,因此降低时间片的大小,一方面可避免因磁盘I/O不畅造成CPU的等待,从而提高了CPU的综合利用率。另一方面减少了进程的阻塞量。

unlockable_mem 提高了不可锁内存的大小,使可用于换页和交换的内存空间扩大,用以满足系统对内存管理的要求。

(3)应用服务SQL质量的优化

我们可以调整应用程序的SQL质量来提高Oracle性能。在SQL语句中我们要尽量避免全表扫描语句的出现,全表扫描会导致大量的I/O,造成资源紧张。合理的建立和使用索引,当一个表的索引达到4个以上时,Oracle的性能可能依旧改善不了,因为OLTP系统每表超过5个索引即会降低性能,而且在一个SQL中,Oracle从不能使用超过5个索引;当我们用到GROUP BY和ORDER BY时,ORACLE就会自动对数据进行排序,当排序不能在我们给定的排序区完成时,Oracle就会在磁盘中进行排序,也就是我们讲的临时表空间中排序,过多的磁盘排序将会令free buffer waits 的值变高,而这个区间并不只是用于排序的。[2]因而select、update、delete 语句中的子查询应当有规律地查找少于20%的表行。如果一个语句查找的行数超过总行数的20%,它将不能通过使用索引获得性能上的提高。索引可能产生碎片,因为记录从表中删除时,相应也从表的索引中删除。表释放的空间可以再用,而索引释放的空间却不能再用频繁进行删除操作的被索引的表,应当阶段性地重建索引,以避免在索引中造成空间碎片。

4. 结束语

Oracle数据库系统性能优化与调整是一个复杂、繁琐的系统工程,贯穿于数据库系统开发的整个过程。数据库系统的调整,包括硬件、操作系统、系统应用语句等几个方面,这几个方面直接决定了整个数据库系统的性能,应该利用各种性能优化与调整工具进行反复的调整、比较以消除瓶颈,获得系统最优性能。

参考文献

[1] 腾永昌.Oracle9i 数据库管理员使用大全[M].北京:清华大学出版社

[2] 柳丹.Oracle PL/SQL面向对象特性Web应用研究[J].计算机技术与发展

[3] 陈秀英.大型ORACLE数据库系统的优化设计方案[J].舰船科学技术

[4] 薛锋.Oracle数据库性能优化[J].广东科技

上一篇:关于做好学前教育与小学教育衔接工作的探究 下一篇:提高小组合作学习的有效性对策