Oracle数据库常见的瓶颈问题分析:oracle数据库菜鸟教程
时间:2020-03-11 07:31:11 来源:雅意学习网 本文已影响 人
摘要:Oracle数据库作为全球第一大数据库厂商,在国内外获得了广泛应用。文章对目前Oracle数据库常见的瓶颈问题进行了分析探讨。 关键词:Oracle数据库;瓶颈问题;处理办法
中图分类号:TP311.13 文献标识码:A 文章编号:1007-9599 (2011) 23-0000-01
Oracle Database Common Bottleneck Issues Analysis
Li Wenpeng
(Daqing Petroleum Administration Communications Company,Daqing 163453,China)
Abstract:Oracle database as the world"s largest database companies at home and abroad has been applied widely.Article on the current Oracle database common bottleneck issues analyzed and discussed.
Keywords:Oracle database;Bottlenecks;Solutions
Oracle数据库性能问题通常都是由某些瓶颈引起的,所谓瓶颈就是数据不得不经过的一种流程或者路线,由于“该流程”不能迅速地处理数据,迫使通信速度“减慢”,进而增加了响应时间。通常,一个正常运转的Oracle数据库状态是这样的:每一个连接的进程要么忙于执行任务,要么在等待任务。这些“等待”的条件是会话在等待一些事件发生。等待的发生原因可能是多种多样的,从磁盘速度慢到锁定情况再到各种Oracle内部竞争都有可能引起等待。
一、潜在的数据库内部瓶颈
有几种情况会影响内部性能,它们是:
缓冲区死锁――内部加锁和Latch锁引起竞争。
缓冲区忙等待――段头与数据缓冲竞争带来的瓶颈。
控制文件等待――Oracle更新控制文件非常频繁,会引起延时。
Latch锁和锁等待――等待来自串行访问latch的结果。
入队列等待――内部latch和锁竞争的征兆。
日志缓冲等待――诸如重做日志空间请求这类事件。
撤销段等待――撤销段可能引起串行等待。
然而,存在等待的流程并不总是瓶颈的迹象。等待可以是用户发起活动的简单情况。尽管如此,仍然要谨慎检查等待流程背后的原因,以及它对响应时间的影响,数据库调优的真正目标是优化响应时间。
数据库操作的响应时间由两部分因素组成,执行时间加上等待时间,也就是说:响应时间=服务时间+等待时间。识别和解决等待时间的问题可能是个繁琐的过程,通常被称为基于等待的分析。基于等待分析的首要步骤之一就是找到等待特定事件的个数和解决每个等待所需的时间。DBA们可以利用这两部分信息来识别等待开始性能下降的数量级,进而引导他们进入识别瓶颈的下一阶段。
收集这些信息需要用到几个查询命令,并从数据库内部查询一些信息。基本信息可以从视图“V$SYSTEM_WAIT_CLASS”中得到。然而,那里只列出了等待时间和新等待类别的数量。DBA们还可以利用系统级别等待摘要获得数据库等待的宏观图像。那些摘要可以通过运行“$ORACLE_HOME/rdbms/admin”目录下的“awrrpt.sql”脚本生成。它会显示出在AWR快照之间指定时间间隔最耗时的五个事件。
要获得更多详细信息,需要建立一个查询,其中会包括像“WAIT_CLASS”,“TOTAL_WAITS”和“TIME_WAITED”这类对象,这些对象都来自于“V$SYSTEM_WAIT_CLASS”视图。返回的信息会帮助DBA们判断等待时间是由系统引起的,还是由于用户I/O等待引起的。
更好的情况是,DBA们可以求助于第三方工具,这些工具不仅可以识别内部瓶颈,还可以识别可以优化提高性能的SQL语句。市场上这类工具有几十种,选择一款优秀的第三方工具,关键是要确保该工具能集中处理构成整体响应时间延长的等待事件,不管是系统行为还是个别交易业务。
二、数据库外部瓶颈
外部瓶颈在识别时可能会有点棘手,主要是因为有些流程和通行过程是由Oracle以外的因素引起的。大部分外部瓶颈可以归结为几种不同的类型:CPU或者服务器性能,存储性能和基础设施性能。
识别那些外部瓶颈可能是比较艰难的过程,可能需要用到第三方工具,或者需要与网络管理员和其他IT人员协作完成。在识别外部瓶颈时有几个方面细节需要关注,优秀的第三方分析工具应该能发现它们。分析内容包括以下几方面:
(一)磁盘性能。监视分散的读操作,全表扫描,连续读取,索引指针等等。
(二)CPU。按线程,总用量,峰值利用率,重要进程等等监视处理器。
(三)网络。监视SQL*NET度量以及交通吞吐量,监视进程,协议性能,竞争,延时等等的服务质量。
(四)I/O容量问题。I/O子系统的性能达到期望值了吗?I/O容量问题导致的性能问题可以由ADDM诊断出,你也可以使用企业管理器的性能页面来确认磁盘/I/O问题。
(五)应用程序使用的Oracle数据库未达最佳标准。应用程序未达最佳标准使用Oracle数据库吗?如多次建立新的数据库连接的问题,SQL过度解析,对少量数据的高级争用都可能大大降低应用程序的性能,这些问题也可以由ADDM诊断出,你也可以通过使用企业管理器的性能页面从不同方向监视顶级活动-包括SQL、会话、服务、模块和行为。
(六)并发性问题。数据库是由于高度并发性活动导致了性能问题吗?高度并发性活动可能会导致共享资源争用,如产生锁或等待缓冲区缓存,ADDM也可以诊断并发性问题导致的性能问题,你也可以在企业管理器中使用"顶级会话"确认并发性问题。
三、结语
随着现代计算机应用技术的发展和企业信息系统的广泛应用,数据库己逐步成为计算机信息系统和计算机应用系统的基础和核心,而数据库性能的重要性也越来越引起人们的关注。Oracle数据库作为全球第一大数据库厂商,在国内外获得了广泛应用。因此,对Oracle数据库系统的性能问题进行深入研究,提出针对Oracle数据库性能调整与优化的具体方法和措施,对于保证数据库稳定高效运行具有关键作用,具有一定的指导意义和很好的理论与应用价值。
参考文献:
[1]王海亮,林立新,于三禄,郑建茹.精通Oracle10g PL/SQL编程[M].北京:清华大学出版社,2004
[2]王晓春,赵雾,张岩.Windows平台上Oracle数据库的系统性能优化[J].计算机工程报,2004,30(9):79-81
[3]童有奎.浅谈ORACLE数据库系统性能优化方案[J].计算机应用,2005,3:25-26:42
[4]许平格.数据库管理系统中查询优化的设计和实现[D].浙江大学:浙江大学图书馆,2005
推荐访问:瓶颈 常见 数据库 Oracle数据库常见的瓶颈问题分析 oracle数据库面试问题 oracle数据库问题大全