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

作者:Jonathan Lewis

前些天,有人给我发了封邮件,附上了一份10g版本的statpack报告,因为开发人员抱怨系统很慢,但是从statpack的报告上又完全看不出有什么高负载的迹象。

报告头信息显示,机器有4颗cpu,30分钟的快照的信息显示系统非常的空闲

To paraphrase Cary Millsap:如果你不能从汇总的数据中推断一些有用的信息,那么面对开发人员时你只能说:“你认为系统慢--证明给我看”, 然后再跟踪一下他们的行为。

不过,也会有很多情况,汇总的数据也会表现出来一些迹象,至少在一定程度上让你有机会做一个相对好的猜测。

看下面的信息,第一部分是”TOP SQL by cpu”。第二部分是“Instance Activity”;

从上面的信息可以看出两个问题,4个相似的delete语句可能被一个delete_something的过程所调用,(一个接一个的,可能是执行一个cursor,然后进行循环操作)。

接着再看tablescans和物理读:13,368个s的短表tablescans,和110M个blocks扫描。因为仅仅只有一个长表的扫描,和46,000个物理读,所以基本可以推断出大部分的“table scan blocks gotten“来自于短表的扫描,这意味着每次大约8,000 blocks。简单的计算得出每次短表扫描大约640,000行数据。

所以,当前系统有大约13,368次代价非常高的表扫描,并且delete_something过程占了大约8,600个。考虑到每次delete操作仅仅一行,却耗费了大量的开销。

可以打赌,开发所谓的系统慢的情况,肯定是指这个过程比较慢,毕竟,系统好像在这个时间段仅仅只有这个任务在运行。

似乎目标表有结构性的问题,可能类似于缺少索引这样的情况,或者说是索引存在,但是统计信息误导了,也或是绑定变量传入的类型不一致导致了隐式转换,使索引变得不可用。

无论怎么样,汇总的数据还是给出了一些有价值的信息,帮助问题的定位和解决。

警示:

尽管粗略的检查statpack报告得出了极其明显的资源占用,但还是有其它的地方看起来开销比比较大(比如最后一个sql语句)。可能我的分析是正确的,但跟具体开发的抱怨已经关系不大了。

另一方面,定位这个问题其实不需要很久,可以很容易的拿着这个statpack报告跟开发一起review是什么代码表现这么差。

statspack系列5的更多相关文章

  1. statspack系列8

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

  2. statspack系列7

    原文:http://jonathanlewis.wordpress.com/2006/12/27/analysing-statspack-7/ 作者:Jonathan Lewis 这是一段Oracle ...

  3. statspack系列4

    原文:http://jonathanlewis.wordpress.com/2006/12/27/analysing-statspack-4/ 作者:Jonathan Lewis 使用statspac ...

  4. statspack系列3

    原文:http://jonathanlewis.wordpress.com/2006/12/27/analysing-statspack-3/ 作者:Jonathan Lewis 下面的例子中的结果并 ...

  5. statspack系列2

    Analysing Statspack 2       命中率陷阱 原文:http://jonathanlewis.wordpress.com/2006/12/27/analysing-statspa ...

  6. statspack系列6

    原文:http://jonathanlewis.wordpress.com/2006/12/27/analysing-statspack-6/ 作者:Jonathan Lewis 下面是一段时间以前网 ...

  7. 蓝色的成长记录——追逐DBA(8):为了夺回SP报告,回顾oracle的STATSPACK实验

    ***********************************************声明*************************************************** ...

  8. .Net程序员学用Oracle系列(30):零碎补充、最后总结(The End)

    1.同义词 2.Flashback 技术 3.连接字符串的写法 4.转义字符 & 特殊运算符 5.文件类型 6.查看参数 & 修改参数 7.AWR 工具 8.学习方法 & 学习 ...

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

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

随机推荐

  1. Conversion to Dalvik format failed:Unable toexecute dex: method ID not in [0, 0xffff]: 65536

    关于方法数超限,Google官方给出的方案是这样的:https://developer.android.com/intl/zh-cn/tools/building/multidex.html 我也写过 ...

  2. ios PullToRefresh using animated GIF or image array or Vector image

    说说那些令人惊叹的下拉效果 1. 动画下拉,这里借用一下github的资源 优点:直接用gif图处理,下拉进度完全按照gif图运行时间,只要时间和下拉进度匹配就可以了, 效果很流畅 https://d ...

  3. JS中(function(){xxx})(); 这种写法是什么意思?

    自执行匿名函数: 常见格式:(function() { /* code */ })(); 解释:包围函数(function(){})的第一对括号向脚本返回未命名的函数,随后一对空括号立即执行返回的未命 ...

  4. FOR XML PATH 应用及其反向分解

    数据库环境:SQL SERVER 2005 我们实现将同一组的数据内容合并到一行的时候,可以通过FOR XML PATH来实现. 有数据如图1,要实现图2的效果              1.图1到图 ...

  5. html常用标签 第二节

    直接上代码了 <html> <head> <title>我的第二个网页</title> </head> <body> <h ...

  6. 图像储存容器Mat[OpenCV 笔记11]

    IplImage 与 Mat IplImage是OpenCV1中的图像存储结构体,基于C接口创建.在退出之前必须release,否则就会造成内存泄露.在一些只能使用C语言的嵌入式系统中,不得不使用. ...

  7. JPA的泛型DAO设计及使用

    使用如Hibernate或者JPA作为持久化的解决方案时,设计一个泛型的DAO抽象父类可以方便各个实体的通用CRUD操作.由于此时大部分实体DAO的CRUD操作基本一样,采用泛型设计解决这个问题,带来 ...

  8. 处理safari缓存的办法

    window.onpageshow = function(event) {        if (event.persisted) {             alert("From bac ...

  9. ubuntu server 安装

    http://tigerlchen.iteye.com/blog/1765765  解决CDROM找不到的bug

  10. 常用的工具GCC GDB Make Makefile

    系统调用系统调用是操作系统提供给外部应用程序的一组特殊的接口.应用程序通过这组特殊“接口”来获得操作系统内核提供的服务.在 C 语言中,操作系统的系统调用通常通过函数调用的形式完成, 这是因为这些函数 ...