ORACLE系统的性能调整

08-09| http://www.dianzi6.com | EDA/PLD|人气:175

ORACLE系统的性能调整
【摘 要】 从ORACLE数据库系统参数设置和应用程序的开发调整策略入手,介绍了如何进一步调整提高ORACLE数据库处理性能的方法。<--摘要CH(结束)←-->
<--→关键CH(开始)-->  关键词:ORACLE,系统,性能调整


<--关键CH(结束)←-->1 引 言
  数据库是现代计算机信息系统的基础和核心,ORACLE是目前世界上使用最为广泛的大型数据库管理系统,它几乎可以运行在各种类型的计算机平台上,提高ORACLE数据库系统的运行效率,是整个计算机信息系统高效运转的前提和保证。
  随着计算机信息系统的数据量日益剧增,系统的管理者及开发者均碰到系统的性能随着数据量的增加在逐渐下降的情况,笔者结合近几年的系统开发管理经验,从以下几个方面进行系统调整,以提高ORACLE的整体效能,从而提高计算机信息系统的整体性能。
2 调整数据库
2.1 将足够的内存资源分配给ORACLE系统
  将足够的内存资源分配给ORACLE系统,首先要有充足的内存分配给关键的ORACLE参数,如:DB_BLOCK_BUFFERS,SHARED_POOL_SIZE和SORT_AREA_SIZE。
  有些计算机操作系统用虚拟内存来模拟计算机更大的内存,它们使用的是一定的磁盘空间,在内存不能够满足系统使用时,操作系统会使用这一部分磁盘空间,引发系统大量的I/O操作,从而降低系统的运行性能。
  Oracle系统有三个基本的内存高速缓存:库高速缓存,字典高速缓存和缓冲区高速缓存,分别对应三种不同类型的数据。库高速缓存和字典高速缓存一起构成共享池,共享池再加上缓冲区高速缓存便构成了系统全局区(SGA)。SGA是对数据库数据进行快速访问的一个系统全局区,若SGA本身需要频繁地进行释放、分配,则不能达到快速访问数据的目的,因此应把SGA放在主存中,不要放在虚拟内存中。内存的调整主要是指调整组成SGA的内存结构的大小来提高系统性能,一般设定SGA的大小为内存的50%。


  我们可以通过V$PARAMETER参数表,Server Manager或者Oracle Enterprise Manager等相关系统管理工具查看ORACLE的运行参数:

  或者也可以直接查看INITsid.ORA系统初始化设置文件。
2.1.1 缓冲区高速缓存
  是SGA中数据的存储和处理的缓冲区,如果DB_BLOCK_BUFFERS参数被设定得太低,最近被使用的数据将不被保存,如果再次使用这部分数据,必须重新从磁盘读入,从而加大系统I/O和中央处理器资源的使用;如果DB_BLOCK_BUFFERS参数被设定得太高,你的系统可能会宕机。

95.945401
  查看系统的读取命中率,一般来说,在OLTP环境下命中率大于90%,大量的批事物处理会影响本指标值。
  ORACLE缺省的DB BLOCK SIZE为2K,在系统环境允许的情况下,应增加到4K、8K或更高,每个双倍大小的数据块会减少约40%的I/O密集的批处理操作所需要的时间。
2.1.2 库高速缓存和字典高速缓存
  我们可以通过V$LIBRARYCACHE库动态性能表查询库缓冲区的活动信息。

  Pins为SQL和PL/SQL及被访问对象定义的总次数,Reloads为SQL和PL/SQL及被访问对象定义重装载时在库程序缓冲区发生的错误,返回的值越小,说明库缓冲区命中率合适,否则要调整SHARED POOL SIZE重新分配共享池的内存量。
  数据字典缓冲区包含数据库的结构、用户、实体信息,同样可以通过V$LIBRARYCACHE库动态性能表查询来了解它的命中率:

  如果命中率低于85%,则需要调整SHARED POOL SIZE的大小。
  当系统需要执行一个需要排序的查询时,ORACLE会对内存中排序区内所有行进行排序,排序区的大小由INITsid.ORA中的SORT AREA SIZE大小(以字节数表示)来确定,如果ORACLE排序区比内存中存在的更多,就会分配一个临时段来存放与排序相关的数据,一旦临时段被分配,ORACLE不使用一致读取的机制来读取数据,并且没有逻辑读被记录,结果出现负的命中率,从而影响数据的读取命中率。可以通过检测V$SYSTAT中的sorts(memory)(内存排序)和sorts(disk)(磁盘排序)的统计值确定与排序有关的参数设置得是否足够大,理想的情况是sorts(disk)的值为0,所有的排序均在内存中进行。


2.2 I/O的分配
  磁盘的I/O速度对整个系统的性能有较大的影响,影响磁盘I/O性能的主要因素有磁盘竞争、I/O操作和数据块的分配管理。
  在创建ORACLE的表空间数据文件和数据事务登录所用的日志文件时,首先要考虑数据库服务器的可用磁盘资源。如果服务器上有多个磁盘,可以将文件分散存储在不同的可用磁盘上,这样事物处理所执行的磁盘访问不妨碍对相应的事务日志登记的磁盘访问,从而减少对数据文件和事务日志文件的竞争,有效改善服务器性能。
  如果某一张表或几张密切联系的表,需要存放大量的数据且操作频率高,可以为它们建立独立的数据文件和索引文件存储各自的应用数据,并且尽可能将这些数据文件分布在不同的磁盘上,从物理上消除系统表数据和索引数据竞争磁盘的可能性。
  适当为大数据量的表建立分区(ORACLE中每一个分区是一个表),一般在跟踪历史数据的系统中,按照一个与时间相关的列对数据分区,这样在与时间相关的查询中,也可以极大地减少系统的I/O操作,进一步提高系统的性能。
  数据字典中的统计表记录了每一个数据文件的I/O量,可以通过查询这些内部统计表来查看I/O量。


2.3 回滚段的管理
  数据库数据表的事务(DELETE、INSERT、UPDATE)在回滚段产生登记项,它保持数据块在事务开始以前的状态,主要是为用户提供一个数据的读一致视图或者在事务没有提交的事件中回滚,改变为它们原来的状态。回滚段控制着数据库处理事务的能力,因而即使数据库其它部分设计得再好,回滚段设计得不合理,仍将会严重影响系统的性能。
  为回滚段建立一个独立的表空间数据,可以包括在不同驱动器上的多个文件,使回滚段与数据字典、用户数据、索引等分离开来,减少I/O的竞争。同时独立使用回滚段,可以减少用户数据表空间的碎片产生。
  数据库回滚段的当前空间分配可以通过查询DBA_SEGMENTS字典来确定。

  另外,借助DBA ROLLBACK SEGS,用户可以访问有关回滚段状态信息。


3 调整应用程序
  在OLTP环境中,一般采用CLIENT/SERVER方式,如何减少CLIENT与SERVER之间的网络I/O,是整个系统性能提高的重要环节。减少网络I/O的重要原则是:将应用逻辑集中在数据库服务器中。
  (1)建立与客户端无关的数据库的完整性约束,只在服务器中运行,从而有效减少网络的I/O;
  (2)对于表与表之间较为复杂的事务处理,采用触发器;
  (3)为经常使用到的查询列建立索引,提高系统的查询性能,减少磁盘的I/O操作;
  (4)复杂的查询建立视图,使CLIENT端的程序开发应用简洁;
  (5)多表的连接操作应该从返回较少行上驱动;
  (6)充分利用ORACLE的PROCEDURE和PACKAGE,把有关的过程、函数或过程函数的程序包放在SERVER端,应用程序只是简单调用存储过程和函数,这样可以减少大量的网络I/O,同时对应用程序的维护提供方便。
4 结束语
  我们在实际开发应用中,遵循上述方法,收到了较好的效果。如何产生最佳性能,还应根据系统的具体情况进行具体分析和调整。
<--→参考文献CH(开始)--> 参考文献
1 (美)EyalAronoff,Kevin Loney,NooraliSonawalla著,李逸波等译.ORACLE8性能优化和管理手册.北京:机械工 业出版社,2000,1 如果觉得 ORACLE系统的性能调整这篇文章不错,可以推荐给朋友分享哦。
本文Tags:eda技术,eda技术实用教程,EDA/PLD,
相关EDA/PLD资料


温馨提示; 本站的资料全部免费下载,为方便下次找到本站记得将本站加入收藏夹哦,牢记网址http://www.dianzi6.com

此页提供ORACLE系统的性能调整eda技术,eda技术实用教程, EDA/PLD参考。本站还有更多的EDA/PLD相关资料分享。
Copyright© www.dianzi6.com Inc. All rights reserved 。 1 2 3 4 5 6 7 8