原文: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. MVC小系列(十五)【MVC+ZTree实现对树的CURD及拖拽操作】

    根据上一讲的可以加载一棵大树,这讲讲下如果操作这颗大树 <link href="../../Scripts/JQuery-zTree/css/zTreeStyle/zTreeStyle ...

  2. c标准库中字符和数字转换的函数

    字符转换为数字: #include<stdlib.h> atoi();    将字符转换为整型                       例:char ch1;int i=atoi(ch ...

  3. jsf taglib定义函数

    创建文件   在文件中添加function标签 <function> <function-name>getFileContent</function-name> & ...

  4. Web前端开发如何利用css样式来控制Html中的h1/h2/h3标签不换行

      H1/H2/H3/H4标题标签常常使用在一个网页中唯一标题.重要栏目.重要标题等情形下. H1在一个网页中最好只使用一次,如对一个网页唯一标题使用.H2.H3.H4标签则可以在一个网页中多次出现, ...

  5. JavaScript之Function类型

    1. 创建方式 //1.函数声明 function sum(num1,num2){ return num1+num2; } //2.函数表达式 var sum = function(num1,num2 ...

  6. 10.13_extjs,combox,效率为什么这么低

    (1)今天很累!经过三天的奋斗,终于完成了完全最优界面的快捷选址功能.今天是最后一天,最紧张,也最累. 为何我的效率不高呢?!我的时间都花费到哪儿呢?①阅读代码理解过去的逻辑:②关键技术上的再复习再巩 ...

  7. Bzoj 3831 [Poi2014]Little Bird

    3831: [Poi2014]Little Bird Time Limit: 20 Sec Memory Limit: 128 MB Submit: 310 Solved: 186 [Submit][ ...

  8. yum --rpm包安装

    rpm -ivh  package -i 表示安装install -v表示显示详细信息, -vv更详细些 -h表示显示安装进度 --force:表示强制安装 --nodeps:忽略依赖关系安装 --r ...

  9. C# Thread多线程学习

    自我学习理解:一个程序中包括多个进程,每个进程包括多个线程,多个线程可同时做不同的事情(说是同时,但它是交换执行的,人感觉像是同时罢了). 优点:提高CPU的使用率. 线程同步:同步就是指一个线程要等 ...

  10. 经典的C程序

    程序一:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数 #include<stdio.h> void main(){ int a, b, c, i; ; ...