Oracle数据库性能调整与优化技术探讨

来源 :中国新通信 | 被引量 : 0次 | 上传用户:boguiyu
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  【摘要】Oracle数据库是当前应用最广泛的大型数据库,随着数据库数据量的增大、并发用户数量增多,系统常常出现吞吐量降低,响应时间变长的性能问题,如何有效优化、调整数据库性能,避免系统瓶颈,是保证Oracle数据库高效运行的基础。Oracle数据库系统性能优化、调整是一项复杂的系统工程,贯穿于系统的整个生存周期中。
  【关键词】性能调整与优化内存优化磁盘I/O应用程序
  一、数据库系统性能评价指标
  影响数据库性能的要素有很多,具体表现为应用程序、系统资源、并发数量等方面。一般情况下,主要通过以下性能指标来评价数据库系统的性能:系统响应时间、系统吞吐量、数据库的命中率以及内存和I/O的使用情况。
  1.1 系统吞吐量
  系统吞吐量是指单位时间内系统能处理的事物数量,对于数据库系统,也就是单位时间内处理的SQL语句数量。因此,数据库系统的吞吐量(tps)=SQL语句执行的数量/时间。提高系统的吞吐量可以通过提高单个时间内系统执行事物的数量和提高单个事物的执行效率。
  1.2 响应时间
  响应时间是指用户在提交业务操作后到数据库反馈信息给用户所花费的总体时间。提高响应时间的途径有减少系统的服务时间和用户等待时间,两种途径是矛盾的统一体,减少系统的响应时间也就是提高系统的吞吐量,减少用户等待时间就是要提高系统的并发量,在实际应用中,要依据具体的应用情况来确定优化响应时间的主要方面。
  1.3 数据库命中率
  数据库命中率是数据库性能的重要评价指标,主要包括数据库缓冲区命中率和共享池命中率。缓冲区命中率决定了用户需求的数据是否能在内存中得到满足,该比率等于高速缓存命中总数除以对高速缓存的查找总数;共享池命中率决定了用户提交的SQL语句是否需要进行重新解析,该比率等于SQL语句的解析次数除以SQL语句总的执行次数。通常情况,数据库的命中率应该在90%左右,低于这个值的系统均需要做出优化和调整。
  1.4 内存使用效率
  内存使用效率主要体现在可共享内存、永久性内存和运行时内存这三者的分配使用上。内存使用调整目标主要有两种,其一是集中精力解决可能产生最大利益的问题,使利益最大化;其二是尽可能的减少系统的延迟和等待事物。
  1.5 磁盘I/O
  I/O是数据库处理和产生数据必可少的步骤;I/O分为逻辑读、逻辑写、物理读和物理写,其中逻辑操作主要对象是内存,物理操作的主要对象是磁盘,通过减少系统不必要的I/O次数可以提高系统的吞吐量,缩短系统响应时间。其中磁盘I/O是影响数据库性能最重要的方面,尽可能的减少磁盘I/O的次数是提高数据库性能的主要手段。
  二、数据库性能优化技术
  2.1 内存优化
  Oracle的信息存储在内存和磁盘上,由于访问内存比访问磁盘快得多,因此若能把尽可能多的数据存放在内存中,就可以达到加快执行速度、缩短响应时间、减少磁盘I/O等目的。Oracle数据库内存优化主要通过调整SGA内存结构的大小来提高系统性能,其中共享池和缓冲区高速缓存是SGA两个最重要的优化区域。
  (1)优化共享池
  共享池由库缓冲区和数据字典缓冲区组成,其库缓冲区存放已经解释并执行过的SQL语句和PL/SQL程序代码及其分析、执行计划等信息;数据字典缓冲区主要存放数据库对象信息以及用户权限等信息。通过合理设置共享池的大小来确保大多数语句能够在共享池中查找到它们自己的一个已分析版本,就可以提高语句分析和执行的效率,降低资源消耗。数据库管理员通过库缓存命中率以及数据字典缓存命中率来检查共享池设置是否合适。
  库缓存命中率检查方法为:
  Select(sum(pins-reloads))/sum(pins))“Lib Cache”from v$1ibrarycache;
  数据字典缓存命中率检查方法为:
  Select sum (gets)”Gets”,sum (getmisses)“Misses”,sum(gets)/ (sum (gets)+sum (getmisses))“Hit Ratio”from v $rowcache;
  通常情况下,库缓存命中率应该高于99%,而数据字典缓存命中率应该高于90%,否者需要调整SHARED-POOL-SIZE增加共享池大小。
  (2)优化缓冲区高速缓存
  数据高速缓存(Data Buffer Cache)是用于缓存数据库数据的内存区域。从内存读数据和从磁盘读数据,在访问速度上是指数级的差别,缓冲区高速缓存越大,Oracle从内存读的数据就越多,磁盘的I/O就越少,系统性能就越好。数据库管理员通过下述语句来查看数据库数据缓冲区的使用情况:
  P=1-(physical reads/(db block gets+consistent gets))。
  SELECT name,value FROM v$sysstat
  WHERE name IN (‘db block gets’,‘consistent gets’,‘physical reads’):
  这个命中率应该在90%以上,否则需要通过调整DB CACHE SIZE来增加Data Buffer Cache大小。
  (3)调整重做日志缓冲区
  重做日志缓冲区如果分配太小,会导致没有足够的空间来放重做日志而等待,LGWR进程会频繁将LOGBUFFER中的数据写入磁盘增加I/O的次数,影响系统性能。重做日志的任何瓶颈都可能导致系统中所有进程的性能问题,为了确保系统不会发生这类情况,应该随时监控重做日志的竞争情况。观察重做日志缓冲区的工作情况的方法:   select name,Value from v$sysstat where name=’redo bufier allocation retrids’
  “redo buffer allocation retrids”表示进程申请写入重做日志缓冲区失败后的重试次数,正常情况下应该为0,否则应该调整LOG BUFFER参数增加缓冲区的大小。
  2.2 磁盘I/O优化
  对于数据库系统来说,磁盘I/O操作是数据库性能最重要的方面,为了避免与I/O相关的性能瓶颈,监控磁盘I/O并保持其优化非常重要。影响磁盘I/O性能的主要原因有磁盘竞争、I/O次数过多和数据块空间的分配管理等。具体的优化I/O的方法包括以下几方面。
  (1)常使用的对象产生I/O争用的机会较多,应将访问量较大的数据文件放在独立磁盘上,同一个表空间的多个数据文件应尽可能地放在不同的磁盘上,为索引创建单独的表空间,并将表和索引分开在不同的表空间;(2)在内存中修改过的数据先写入重做日志文件中,重做日志文件要足够大,要与数据文件存放在不同的磁盘上,减少对磁盘的竞争,重做日志文件分为几个组,按顺序循环写入;(3)Oracle的文件和操作系统文件应尽可能地放在不同的磁盘上,以减小I/O争用的概率;(4)最好使用目前较流行的廉价磁盘冗余阵列(raid),它能自动分离不同类型、访问频率的数据库文件,减小I/O进程之间的竞争,优化数据库性能;(5)创建回滚段及其专用的表空间,以从系统操作的失败中得到数据的恢复,从而减小I/O进程之间的竞争,防止空间竞争影响事务的完成;(6)单独创建用户数据表空间,且要与系统表空间(system)分开磁盘存放,创建临时表空间用于排序操作,尽可能防止数据库碎片存在于多个表空间中。
  2.3 应用程序优化
  系统中80%的性能问题实际上与oracle数据库的配置无关,而是由于应用程序中SQL语句的拙劣设计和糟糕实现引起。本节从与SQL执行效率密切相关的几个方面来介绍应用程序优化技术,包括索引、SQL语句实现、使用存储过程等。
  1.创建适当的索引
  建立“适当”的索引是实现查询优化的首要前提。如果通过索引来访问数据库,可以大大减少对大型表的全表扫描,从而减少I/O的开销。当使用索引时,应该注意以下原则:①不对小型表创建索引;②为经常检索大表中少于15%的行创建索引;③有很多空值并且查询会涉及到空值的列不太适合索引;④不对大型字段创建索引;⑤索引不是越多越好,特别是大量从来或者几乎不用的索引,对系统只有损害;⑥单列索引不如复合索引有效率;⑦为用于多表连接的字段加上索引,为经常进行连接的表使用簇;⑧将表和索引建立在不同的表空间内,不将应用数据的对象存放到system表空间里,并确保数据表空间和索引表空间置于不同的物理磁盘。实际应用中,索引的建立必须慎重,要注意索引导致的查询语句性能的提高与更新数据时性能的降低之间的平衡。
  2.SOL语句调优
  SQL语句优化的实质就是在结果正确的前提下,用优化器可以识别的语句,充分利用索引来减少表扫描的I/O数,尽量避免表搜索的发生。优化的目的就是将性能低下的SQL语句转换成目的相同的、性能优异的SQL语句,使数据查找的路径最简化,并尽量保持处理器时间和I/O的平衡。
  SQL语句优化原则:①采用绑定变量;②选择联合查询的连接次序;③避免相关子查询;④适当使用临时表来加速查询;⑤消除对大数据表行数据的顺序存取;⑥正确使用UNION和UNION ALL;⑦使用表的别名;⑧正确使用WHERE子句;⑨建立“适当”的索引;⑩正确使用NULL、IN、EXIST、OR。
  3.使用存储过程
  Oracle的存储过程是SQL语句和可选控制流语句的预编译集合,以一个名称存储作为一个单元处理,能完成一定功能并且存储在Server端的PL/SQL的集合。相对于应用程序的过程、函数而言,把SQL命令存储在Server端。使用存储过程,应用程序不必再包含多个网络操作的SQL语句去执行数据库服务器操作,而是简单调用存储过程,在网络上传输的只是调用过程的名字和输出结果,这样就可减少大量的网络I/O。
  三、小结
  Oracle 10g数据库系统性能优化与调整是一个复杂、繁琐的系统工程,贯穿于数据库系统开发的整个过程。数据库系统配置的调整,包括内存结构调整、磁盘I/O调整以及应用程序优化等,直接决定了整个数据库系统的性能,应该利用各种性能优化手段进行反复的调整、比较以消除瓶颈,获得系统最优性能。
  参考文献
  [1]罗瑞明. Oracle数据库的性能优化方法研究.信息安全与技术,2012(5).
  [2]孙风栋,闫海珍. Oracle 10g数据库系统性能优化与调整.计算机技术与发展,2009(2).
  [3]李振宇. Oracle数据库的优化及方案.科技信息. 2010(13).
其他文献
当前随着改革开放的不断深入,国民经济飞跃发展,科学技术突飞猛进,21世纪会更加灿烂辉煌。因此,教育必须面向世界,面向未来,面向现代化,造就高素质的人才,以适应新的形势发展和挑战,推
目的探讨医科大学生学习适应性现状及其与心理健康的关系。方法采用修订的大学生学习适应问卷和自评量表(SCL-90)对6所医科大学生进行测试。结果医科大学生学习适应性在专业兴
目的:对经脐单孔腹腔镜胆囊切除术与多孔腹腔镜胆囊切除术的临床效果进行比较。方法:收集来我院就诊且诊断为胆囊疾病的患者168例,将其随机分为观察组(86例)与对照组(82例),观察组
【摘要】配网故障抢修是配电生产管理的重要工作之一,关系到配电设备的安全和配电系统连续可靠运行,关系到配网故障后用电客户的快速和及时供电。采用配网故障快速隔离及定位系统,及时为故障抢修提供准确的故障位置和辅助决策信息,使抢修工作由被动变主动,为故障的快速处理提供技术保障,从而全面提升配网管理水平。  【关键词】配网故障隔离定位系统  一、配网概况  我公司所辖 6~10千伏配电线路共计31条,配电变
为全面掌握我市托幼机构食品卫生现状,进一步加强幼儿集体用餐卫生管理工作,确保儿童集体用餐的安全,及时发现和消除托幼机构内存在的食品安全隐患,防止食物中毒和肠道传染病的发
在这科技水平飞速发展的时代下,信息技术也是发生着重大的变化。人们对信息的需求量越来越大,在现代通讯中光纤通讯是最为重要的传输方法。现阶段,在我国飞速的发展,光纤通讯
【摘要】 对于财经类的学生来说,统计学原理是他们必修的专业基础课。但在教学过程中,学生普遍认为这门课不好学,概念难以理解,公式不易记住,并且认为统计学原理不像其他一些学科,如会计、企业财务管理等课程实用,故长期以来教学质量很难提高。造成这样的结果,原因在于该学科是政治经济学、辩证唯物主义、哲学、经济学、数学、社会学等多学科相互交织在一起的一门应用性学科。  【关键字】 中职教学 统计原理 效果 提
现在完成时是历年初中英语教学中一个难点和重点,同时也几乎是历年中考英语时态考点中一个必考内容,许多学生对现在完成的用法模糊不清,做题时常会跟着感觉走。本文结合初中英语
近年来,吉林省劳动保障行政复议案件逐年增多,根据省政府法制办提供的信息,前些年吉林省劳动保障系统的行政复议案件寥寥无几,自2004年以后,全省劳动保障行政复议案件逐步增多。而
TD-LTE网络的快速部署和应用,是物联网发展的有力推手,本文分析了TD-LTE网络的技术优势和传送网架构,对物联网的网络结构、物联网业务发展趋势及发展瓶颈进行了介绍和分析。由于TD-LTE网络能够满足物联网业务承载需求,提出了基于TD-LTE技术的移动物联网应用方案。