Oracle 10g数据库系统性能调优

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:www0908
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:Oracle数据库是当前应用最广泛的大型关系数据库系统之一,其运行性能直接影响整个应用系统的执行效率。通过对影响Oracle 10g 数据库系统运行的主要因素如SGA、 PGA、磁盘I/O以及磁盘碎片等的分析,提出了使用Oracle 10g 提供相关的工具对系统进行性能调整和优化。
  关键词:SGA;PGA;磁盘I/O;磁盘碎片;系统性能调优
  中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2013)17-3918-06
  Oracle 10g数据库管理系统是技术先进、功能强大、安全稳定的大型数据库管理系统之一。在银行、电信、航空和电子商务等这些大型的软件应用领域,一般都选择Oracle数据库管理作为数据平台。在应用系统的日常运行中,由于用户数迅速增加,数据库中存储的数据量亦成几何级数增长,系统常常会出现吞吐量降低、响应时间变长等性能下降问题。为此,如何有效优化和调整Oracle数据库性能,保证整个应用系统高效运行,成为了有待探讨的热点问题。
  1 数据库性能的评价依据
  优化数据库系统的性能,通常是采取相应措施,既减少对磁盘的访问而又能获得用户所需要的相关数据, 以达到降低系统对用户的响应时间、提高数据吞吐量、提升数据库的可用性的目标。评价一个数据库的性能是否优异的一些通用准则如下所述。
  1.1 系统响应时间
  系统响应时间是指从用户按下提交按钮到数据显示在输出设备上所花费的时间。系统响应时间是评价数据库性能的一项重要指标,很多客户对系统响应时间都有严格的要求,因此缩短系统响应时间非常重要。
  1.2 数据加载时间
  为满足加载数据的时间需求,管理员可调整计算机的 I/O 子系统缩短数据加载时间,而系统其他方面的性能会由此受到影响。此时可分别调整系统的数据库运行性能和数据加载性能,将影响减至最小。
  1.3 系统实际吞吐量
  吞吐量是指在给定单位时间内传送的位(bit)数量。实际吞吐量是指在给定间隔内接收到的用户数据量减去必须重新传输的字节数后的吞吐量。提高系统吞吐量的方法为:1) 减少系统总的响应时间;2) 减少服务时间。
  1.4 对用户支持能力
  另一个评价系统性能的重要因素是系统对用户的支持能力。要使系统能支持更多的用户,必须对系统在相关方面进行配置和调整。
  2 影响数据库系统性能的主要因素
  通过对数据库性能评价依据的分析,发现很多因素都会影响Oracle 10g的性能。比如:数据库服务器、CPU、内存、网络、I/O、应用程序性能以及由用户所产生的数据库负载等。
  下面列出的是一些导致系统性能下降的主要因素:
  1)数据库服务器:数据库服务器由数据库和实例组成,是整个管理系统的核心。数据库的主要功能是保存数据,其存储结构分為逻辑存储结构和物理存储结构。物理存储结构描述Oracle外部及其所处的操作系统环境中文件组织和管理数据的方式,逻辑存储结构描述Oracle内部组织和管理数据的方式。
  Oracle实例是指数据库服务器的内存及相关后台进程,又称为Oracle数据库引擎。启动数据库后,由实例来访问和控制磁盘中的数据文件。实例由SGA (System Global Area,系统全局区)和后台处理进程组成。
  2)CPU :如某个数据库事务或其它应用占用了CPU 资源,其它数据库事务运行将可能会停滞,从而延迟对数据库的响应。
  3)操作系统:操作系统控制和管理各种资源,合理组织计算机系统的工作流程,帮助用户合理利用和分配资源,为用户提供方便的工作环境,为多个用户提供安全高效的计算机资源共享。
  4)网络系统:系统的吞吐量和响应时间过长,有可能是网络方面存在问题。数据库服务器与应用程序之间的交互是通过网络来进行的。在整个网络系统中, 影响较大的是网络 I/ O。I/O 子系统如果超载,系统输入输出量加大,系统获得数据的等待时间延长,从而影响整个系统的运行性能。
  5)实现应用程序:对数据库性能影响比较大的因素还包括实现应用程序的方法。如连接数据库的方式、SQL 语句的灵活运用、使用数据库对象的情况以及数据库端程序设计等。
  3 数据库系统性能调配优化的方法
  通过对影响Oracle数据库性能的因素进行分析,我们可以从以下几个方面对数据库系统进行配置,以调整和优化系统的运行性能。
  3.1 合理设计数据库
  数据库的设计在系统设计中是一个非常重要的环节,从根本上来说就是要实现数据的共享和安全存取。一个优秀的数据库设计必须要实现用户对于数据的要求,而同时又要实现对数据的关联性、安全性、可移植性和可扩容性的要求等。
  1) 明确系统所属的数据库类型。
  在进行数据库设计时,先要分清楚数据库所属的类型,常见的有在线分析系统(OLAP)和在线事务处理系统(OLTP)。数据库的内存效率,内存各种指标的命中率、并发操作控制等,是在设计OLTP系统时特别要注意的。而数据分析、SQL执行时间、磁盘I/O及强调分区等。在设计OLAP系统的设计时要特别强调。现在购买火车票使用的网上订票系统,就是一个典型的OLTP系统。如并发操作考虑不充分,当遇到春节期间在线购票的用户太多时,有可能导致系统近于瘫痪。
  根据自己的经验设计数据库,将系统资源分配给相关的用户,尽量限制应用程序的用户数量,对系统资源的使用情况密切监控,了解用户所使用的资源数,重视监控系统,对系统调整及其结果做好详细记录。
  2) 创建适用的数据文件。
  每个Oracle数据库都有一个或多个数据文件,数据库的主要作用是来保存在这些相关的数据文件。通过使用命令:select status, bytes, name from v$datafile,可以查看数据文件的存放位置、大小和状态。OLTP系统是SQL语句提交和数据块变化都非常频繁的系统。为减少重复的SQL解析和物理I/O,可采用变量绑定技术实现SQL的重用,同时让数据块尽可能的保存在内存中,以改善和提高数据库的性能。   3) 正确使用索引。
  正确创建和正确使用索引具有很多优势。如在快速存取数据、实施数据的唯一性和参照完整性、多表检索查询数据时,利用索引可以减少排序和分组的时间,减少系统开销。对于Oracle系统来讲,并不是创建了索引就一定会使用索引,当Oracle自动搜集了表和索引的统计信息之后,才会确定是否要使用索引,只有高选择性的索引才会比全表扫描更有效率。因此,对于规模比较小的表、频繁进行更新的表、在查询中很少用到的列等,建议不要创建索引。
  索引建立后会将占用磁盘空间,当对数据进行插入、更新和删除等操作等操作后,系统将重建索引,延长了数据修改的时间,所以,应在需要的时候才创建索引,在不需要索引时将其删除。适合建立索引的字段列一般为:主键列、表的外键、经常用于查询或多表连接的字段列、经常用于WHERE子句、ORDER BY子句、或GROUP BY子句的字段列等,在这些字段列上创建索引,会加快检索的速度。而对于在查询中很少使用的列、在表中具有较多重复值的字段列、数据需要频繁变更的字段列则不宜创建索引。因为在这类字段列上建立索引,其检索性能会远远小于其修改性能,得不偿失。
  3.2 调整与优化内存管理
  Oracle的内存结构包含两个部分:系统全局区(SGA)和程序全局区(PGA)。SGA主要包括了以下的数据结构:数据缓冲、重做日志缓冲、共享池、Java池、大池、流池、数据字典缓存及其他信息等,这些部分的分配是否合理直接影响数据库的性能。
  内存不足将减少数据的缓冲区空间,影响系统访问最近存放的数据,从而导致操作系统进行页面交换时频繁使用虚拟内存,使计算机系统增加额外的 I/O 开销。
  对那些支持大量连接的系统,为保证计算机系统的可用资源能适用不同的用户对系统的资源需求,要对内存做好详细计划,严格控制与网络和连接用户有关的操作系统资源。
  3.2.1 数据缓冲区
  3.4 碎片整理
  在数据库系统的运行过程中,数据的存取操作不断进行, 数据库将寻找自由范围最大的表空间来存放数据,从而形成越来越多的较小的、离散的自由空间,即生成磁盘碎片。碎片整理就成为了数据库日常维护中的重要的工作环节。一般将碎片分为三级:表空间级、表级、索引级。
  表空间级碎片的出现主要是由于DROP TABLE和TRUNCATE等操作引起的。由于一个表空间中的表的EXTENT大小不同,因此表空间使用一段时间后,表空间的使用就出现了不连续,在EXTENT之间会出现一些“洞”,这种情况称为表空间碎片。设置所有的EXTENT都一样大,不会出现表空间碎片。
  表级碎片是一些零散的存储空间。当对一个表进行删除操作时,被删除的数据释放出的存储空间不会被插入操作立即重用,这样就形成了表级碎片。当表级碎片过多时,导致查询响应时间变慢、产生大量行迁移、行链接导致数据存储不连续、浪费存储空间等。整理表碎片可采用如下步骤:
  1) 整理表
  2) 重置高水位
  3) 索引和表数据是级联关系的。当表中有建有太多索引,进行表中数据删除操作的时候,索引值将频繁变化,索引条目也会被自动删除,这样在index leafblock就会产生碎片。当索引的碎片过多时,会影响执行查询的速度。在OLTP系统中有大量更新的表上建议不要创建大量的索引,低基数列上也不要创建索引。为快速查找数据,只在那些数据变化频率较低的列上创建索引。在已建索引的列上出现频繁的数据变化,拟制索引碎片的产生最好的方法是重建索引。
  3.5 CPU性能调整
  服务器中一个重要的资源就是CPU。当CPU资源被某个数据库事务占用或被其它应用占用,可能会影响数据库事务运行,导致数据库系统响应迟缓。若CPU占用率超过90%,则说明Oracle服务器CPU资源不足。引起 CPU 资源不足的原因主要有:锁冲突、低效率的SQL语句、SQL语句的重解析等。查询变慢是CPU资源不足的主要表像,其实质是严重影响了数据库的性能。
  调整CPU,减少服务器的CPU对数据库性能的不利影响,提高数据库系统的性能。
  1)CPU的技术发展很快,在Oracle领域要重视CPU并行技术的应用,在执行事务处理和查询时分别使用不同的CPU处理器。最好分开数据库服务器和应用程序的CPU请求,或在请求较多时,实行对服务器请求的转移,即采用多个服務器请求。
  2)进行数据查询时可使用PQO方式。PQO方式的优势很明显,当用户需要查询的数据存放在不同的磁盘时,可将SQL语句的请求分配到多个CPU进行处理,对彼此独立的进程同时实现数据读取。
  3)Oracle数据库与运行在同一台服务器上的其他所有软件共享CPU资源。如果CPU处理能力不足,减少Oracle或者非Oracle程序的CPU消耗可以改善服务器上所有进程的性能。
  对CPU的利用率进行调优实质上就是对每个单独的任务进行调优,减少完成任务所需要的命令数量。通过负载均衡,SQL调优,以及改进应用程序的设计等方式来具体完成CPU调优工作。
  4 Oracle 10g常用优化工具
  Oracle 数据库提供了一些优化工具,包括Oracle数据库在线数据字典、操作系统工具、SQL语言跟踪工具、OEM等。通过查询数据字典、分析动态性能视图,获取数据库的运行信息,有效的进行Oracle性能优化的工作。以下是几种常用的Oracle数据库性能优化工具。
  5 结束语
  Oracle10g 数据库系统性能调优是复杂繁琐的系统工程, 其工作贯穿于整个数据库系统开发的过程。从系统配置入手, 包括内存分配调整、 磁盘I/ O 调整、操作系统调整以及磁盘碎片整理等, 整个过程是一个有机的整体,缺一不可。数据库系统的性能调优, 应该充分利用各种能优化性能的资源,正确使用调整工具进行反复的调整、以获得系统的最优性能。
  参考文献:
  [1] 朱亚兴. Oracle数据库系统应用开发实用教程[M]. 北京: 高等教育出版社, 2012.
  [2] 文平. Oracle数据库性能优化的艺术[M]. 北京: 机械工业出版社, 2012.
  [3] 姚世军. Oracle原理与应用[M]. 北京: 中国铁道出版社, 2010.
  [4] 孙凤栋,闫海珍. Oracle10g数据库系统性能优化与调整[M]. 计算机技术与发展 2009(2).
  [5] 魏亚楠,宋义秋. Oracle数据库应用系统的性能优化[J]. 制造业自动化, 2010(8).
  [6] 罗瑞明. Oracle数据库的性能优化方法研究[J]. 信息安全与技术, 2012(5).
  [7] 雷红妮,张金玲. Oracle数据库优化探讨[J]. 工业控制计算机, 2012(12).
其他文献
在这个“化繁为简”的简约时代,越来越多用户选择用笔记本来替代台式机。
随着科学技术的不断发展。传播方式已从跨媒体多媒体的形式逐转变为全媒体的崭新方式,科技馆教育传播同样也面临着全媒体时代多元化传播方式所带来的考验和冲击。本文试图阐述
针对租金、选址、住房基本设施成为影响公租房满意度的三大基本问题,运用层次分析法(AHP),将调查统计的结果模拟成能较准确地衡量满意度的模型.据此分析可得出结论:重庆民心佳园为
网络教学平台是实施网络教育的支撑平台,该文详细介绍了基于Linux系统环境下,系统的安全设置、用户的管理、网络访问的基本策略、系统的监管,通过对这些方面进行综合分析,实
人才建设,规划先行。规划在设定原则、目标、任务等的同时更应该明确各规划段内执行和完成任务的承接者,以确保任务在规划时间段内如期完成;教育,特别是高等教育机构,是人才
本文综述了脑组织、血液、脑脊液和病理组织中神经节苷脂的改变在缺血缺氧性脑病、急性脑外伤动脉粥样硬化和恶性肿瘤等疾病中的意义.