[性能诊断.docVIP

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[性能诊断

诊断性能问题 作者: Cary Millsap 来源:OTN 使用扩展 SQL 跟踪数据来了解是什么在耗费这么长的时间。 假如有一天你开车去上班,但最后还是没能及时参加一个重要会议。你无法将你的革命性的想法呈现给客户,所以他们也不会采用。你的拖拖拉拉使你感到沮丧,你发誓决不再犯同样的错误。那么,为了不再发生类似情况,你怎么判断问题的原因呢?按照下面这个列表进行检查怎么样? 检查汽车外表是否有缺陷,因为外表有缺陷会使汽车的最高速度降低 1% 或更多。 检查车轮定位,因为外倾角、后倾角或前束角不合适都会导致汽车的操纵不灵活并且耗费时间。 检查发动机,以确保达到额定马力的 99% 或更高。如果不是这样,则要考虑重装或更换发动机。 不,你可能不会采用这种检查方法;那样太可笑了。你可能会以完全不同的方式来判断问题之所在,可能只是问你自己一个简单的问题:什么事情让我花了这么长时间? 从这个角度出发,问题就迎刃而解了。如果开车需要 40 分钟,而你在会议开始前 20 分钟才动身,那么下次就要提前 30 分钟动身。如果因为交通拥堵浪费了 20 分钟,那么,下次要么再早一些动身,换条路线,要么更仔细地查看早 7 点的路况报告。如果是你迷了路,结果浪费了 20 分钟去兜圈子,那么下次你大概就要事先看看地图。如此等等。 我感到奇怪的是,那些擅长解决日常性能优化问题的数据库专业人员在工作中却使用完全不同的方法来解决数据库性能问题。许多数据库 调优人员 从来不问, 是什么让这个程序运行了这么长时间? 相反,他们会参考检查内容清单,并试图阻止错误发生: 检查所有 Oracle 块请求是否都由数据库缓存提供服务 检查是否有全表扫描 检查所有排序是否都在内存中进行 检查重做日志是否与其他所有数据库文件进行了适当的隔离 等等。 对于某些工作来说,使用检查内容清单也许很好。但是对于判断性能问题这样的工作,试图确定理论上可能会出错的每一件事,从而对这个问题进行处理的做法的效率会很低。更有效的方法就是找到这个简单问题的答案: 是什么花了这么长时间? 用于优化 Oracle 程序的好的策略就如同日常生活中用到的策略。就像这样: ?? 使用专门的仪器来测定程序的性能,从而监视运行速度慢的程序。 ?? 为运行慢的程序创建资源描述,把程序的响应时间细分为几种有用的类型。 ?? 通过首先处理响应时间最长的部分来缩短程序的响应时间。 当你了解了若干技术细节之后,这个方法就非常简单了。如果你真的这样做,那么每次你都能获得一个有用的方法,久而久之,你将能在进行性能改进之前预知其结果。 跟踪 如果你有用于收集程序中每个执行步骤的时间统计信息的高级工具,那就用吧。但只收集汇总数据(如通过对系统全局区 [SGA] 或其基础共享存储段采样获得的数据)的工具对于某些类型的问题就不适合。 使用昂贵的监控工具时最常见的汇总错误是它们会跨整个 Oracle 数据库实例来汇总某一给定时间间隔内资源的使用情况。但是,运行速度慢的程序实际上可能不受资源争用问题的影响,而这个问题却完全控制着系统中一些不太重要的程序的性能。 即便是那些在 Oracle 数据库会话级上汇总信息的工具在诊断一些重要的问题类型时也存在着缺陷。例如,假设一个程序运行 10 分钟,调用了 10000 次 Oracle SQL*Net message from client 这一 等待事件 ,会话等待该事件的总用时为 8.3 分钟。这意味着会话对 SQL*Net message from client 事件的等待时间平均为 3 秒。但是单从汇总数据看,你无法知道这 10000 次调用是否每次都用 3 秒,还是这些调用中也许有一个用了 5 分钟,而其余 9999 次调用每次只用 0.02 秒。这两种情况需要进行完全不同的处理。 在这种情况下最能为你提供帮助的诊断数据是 Oracle 的扩展 SQL 跟踪数据。扩展 SQL 跟踪文件按时间顺序显示了 Oracle 数据库内核在指定时间内所完成工作的逐条记录。收集扩展 SQL 跟踪数据几乎是免费的。最大的花销是存储每一个需要引起注意的跟踪文件所需磁盘空间(很少超过几兆字节)的费用。 跟踪自己的代码。如果能访问程序的源代码,则打开其扩展 SQL 跟踪就非常容易。首先必须确保会话的 TIMED_STATISTICS 和 MAX_DUMP_ FILE_SIZE 参数设置正确: alter session set timed_statistics=true alter session set max_dump_file_size=unlimited 如果没有设置 TIMED_STATISTICS=TRUE ,则数据库内核将把

文档评论(0)

317shaofen + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档