原文:http://jonathanlewis.wordpress.com/2006/12/27/analysing-statspack-7/

作者:Jonathan Lewis

这是一段Oracle Database 10g Performance Tuning Tips and Techniques书中的关于Oracle 9i statspack的片段。书中没有给出快照的时间间隔,cpu的个数,平均的active 会话,所以下面的评论完全具有投机性。

但是,作为一个纯理论上的实验,这里将给出一个关于statpack的合理的解释:

Top 5 Timed Events
~~~~~~~~~~~~~~~~~~                                                  % Total
Event                            Waits    Time (s) Ela Time
---------------------------               ------------ ----------- --------
db file sequential read                    399,394,399   2,562,115    52.26
CPU time                                       960,825                19.60
buffer busy waits                           122,302,412  540,757      11.03
PL/SQL lock timer                            4,077       243,056      4.96
log file switch (checkpoint incomplete)      188,701     187,648      3.83

这里的问题是,五个top 数据,哪一个会对用户感知到的系统性能有最大影响。

重述一下,这里仅仅是单纯的猜测,拓展下思路。有可能对于用户来说的性能问题恰巧是报告中占用时间最短的。

我不知道快照的持续时间是多少,也不知道有多少个会话。我能确定的是,如果系统仅仅只有一个cpu,那么快照至少要267个小时(cpu time/3,600), 如果是16颗cpu,那么就是17个小时,所以可能是16颗cpu,24个小时, 或者64颗cpu,6个小时,我们就假设是后者。

你应该意识到,当有大量的单块读的时候,buffer busy wait也就没有那么的重要了。

当然,如果你在做大量的读的话,buffer busy waits是会有所增加,因为一个会话要等待另一个会话来完成这个块的读,cpu也会因为要锁住cache buffers chains和LRU chains会增大开销,所以,这样的活动应该仔细review一下,以避免发生。(10g中把这个读相关的等待重命名为“read by other session”);

仔细看一下时间:平均的读时间是6.41毫秒(时间除以读的次数), 平均的buffer busy wait时间是4.42毫秒,log file switch checkpoint completion的平均等待时间是0.994秒。

这里有两个重要的点,首先,是终端的用户的会话在等待log file switch(checkpoint incomplete),其次是在这个等待上,超时的时间是1S,(这就意味着肯能有不少的长的等待被分割成了1s的时间片)。

现在,我们不知道有多少用户会有checkpoint的问题,或者说是每个用户都等待了多长时间,但是log file switches不应该一直都在发生,一般情况下,大量的以查询为主的活动并不产生redo,所以也不会遇到这个问题。

如果,假设是在6小时的间隔里,大约有188,000次会话活动等待了1s,还有其它的等待。与log switch wait相关的等待又有多少等待时间。在buffer busy wait的2.9s中,单块读的13.6s,全部的16.5s,(这仅仅是使用其它的时间来除以188,000次活动)。

这意味着如果你有15.5活动会话,每一个都在dml操作时会有log switch 等待,log switch wait占用了jammed 会话等待时间的一大部分。我们假设这个是一个大的系统,所以查询和dml活动的比例按照15.5:1来算。

现在已经分析了这些数据,但有一个争论是很明显的,它是可能发生的。这是一个大的系统(或者一大段时间的小系统)完成了大量的工作,这里有明显的标示,资源的浪费和buffer busy waits的争用,但是对于终端用户来说,所能观察到的性能问题可能是checkpoint not complete。

最小的statpack 等待可能是用户最明显的问题所在,平均值会隐藏细节。

Footnote: log file switch(checkpoint not complete)的等待可以很容易的消除,可以使用更多,等大的log文件来解决,有些时候,可以使dbwr写更少的脏块或者让写的数据更快(这个可以通过调整fast_start_mttr_target或者增加dbwr的个数),最合适的方法是仔细的check了log file 大小, log file switch的时间, 两个log_checkpoint参数的设置和一些提前的统计的前提下,做出的决定。

*** Specifically Chapter 14 Using Statspack and the AWR Report to Tune Waits and Latches,  available as a pdf download from McGrawHill.

转载于:https://www.cnblogs.com/xpchild/p/3694947.html

statspack系列7相关推荐

  1. statspack系列8

    原文:http://jonathanlewis.wordpress.com/2006/12/27/analysing-statspack-8/ 作者:Jonathan Lewis 在前面的关于stat ...

  2. php arrayiteratoer,手动去除uTorrent中广告的步骤(V3.4.9依然有效)

    1.开打utorrent,依次点击选项->设置->高级. 在"高级"界面中,你会看到"过滤器",在"过滤器"右侧的框中输入&qu ...

  3. Statspack 基础入门

    oracle statspack入门: 参考:eygle老师的<statspack使用指南> Statspack 使用指南 http://www.eygle.com/pdf/Statspa ...

  4. 【等待事件】等待事件系列(5.1)--Enqueue(队列等待)

    [等待事件]等待事件系列(5.1)--Enqueue(队列等待) 1  BLOG文档结构图 2  前言部分 2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其 ...

  5. Statspack专题

    eygle Statspack专题 :http://www.eygle.com/archives/2004/11/statspack_list.html 以下内容均在window Xp,oracle9 ...

  6. 妙用postman系列——postman建组、分享

    妙用postman系列--postman建组.分享 添加新的组和请求. 3.生成分享链接 4.导入分享链接

  7. java 手编线程池_死磕 java线程系列之自己动手写一个线程池

    欢迎关注我的公众号"彤哥读源码",查看更多源码系列文章, 与彤哥一起畅游源码的海洋. (手机横屏看源码更方便) 问题 (1)自己动手写一个线程池需要考虑哪些因素? (2)自己动手写 ...

  8. RabbitMQ 入门系列(2)— 生产者、消费者、信道、代理、队列、交换器、路由键、绑定、交换器

    本系列是「RabbitMQ实战:高效部署分布式消息队列」和 「RabbitMQ实战指南」书籍的读书笔记. RabbitMQ 中重要概念 1. 生产者 生产者(producer)创建消息,然后发送到代理 ...

  9. Bert系列(二)——源码解读之模型主体

    本篇文章主要是解读模型主体代码modeling.py.在阅读这篇文章之前希望读者们对bert的相关理论有一定的了解,尤其是transformer的结构原理,网上的资料很多,本文内容对原理部分就不做过多 ...

  10. Bert系列(三)——源码解读之Pre-train

    https://www.jianshu.com/p/22e462f01d8c pre-train是迁移学习的基础,虽然Google已经发布了各种预训练好的模型,而且因为资源消耗巨大,自己再预训练也不现 ...

最新文章

  1. Python基础教程(二):基础语法、变量类型
  2. UNIX:描述符和文件结构
  3. java 静态块的作用域_java 学习笔记(一)
  4. 【OC】【一秒就会】【collectionView 头部吸住功能】
  5. jboss eap 7_使用JBoss EAP 7的HTTP / 2
  6. PyTorch 1.8版本!正式支持AMD GPU
  7. 244. Shortest Word Distance II
  8. 总结协查上海银行绑卡失败原因的处理过程
  9. JAVA 设计模式 职责链模式
  10. 精品素材 – 24款扁平风格 PSD 格式图标免费下载
  11. css随记01编辑技巧,背景与边框
  12. Pandas程序回顾
  13. linux设置不同地址,ubuntu20.04设置静态ip地址(包括不同版本)
  14. 基于OpenCV的三维数据点的曲面重构_MySurefaceReconstruction
  15. PTA 程序设计-一帮一(C语言)
  16. 算法之数学--常用数学公式,规律神器OEIS 2021-03-09
  17. 2022-06-14 QThread CPU压力测试
  18. openstack-mitaka(一) 架构简介
  19. echarts饼图label文字颜色
  20. 多线程设计模式-线程池模式

热门文章

  1. jqgrid 行选中multiboxonly属性说明
  2. 如何通过OWA登录界面修改域用户的密码
  3. mysql数据库获得树的节点
  4. @objc private 定义函数
  5. RHEL6入门系列之三十三,写在最后
  6. mysql left join右边有多条_left join 右表多条数据重复
  7. Luogu2774 方格取数问题
  8. vant组件二次封装-下拉刷新列表组件
  9. 基于python的注册登录界面_基于python的Tkinter编写登陆注册界面
  10. css 伪类大全,CSS 伪类