AWR 报告的“Load profile”节,如下图所示,包含很多极为有用,却被经常忽视的信息。通常更倾向使用“instance efficiency percentages”节,虽然可读性好,但很容易产生误解

 

Per Second

Per Transaction

Per Exec

Per Call

DB Time(s):

0.1

0.2

0.01

0.08

DB CPU(s):

0.0

0.1

0.01

0.05

Redo size:

2,650.2

9,391.1

   

Logical reads:

863.7

3,060.4

   

Block changes:

31.6

112.1

   

Physical reads:

220.2

780.2

   

Physical writes:

0.7

2.3

   

User calls:

0.9

3.1

   

Parses:

2.4

8.4

   

Hard parses:

0.2

0.8

   

W/A MB processed:

356,098.6

1,261,849.5

   

Logons:

0.0

0.2

   

Executes:

5.3

18.9

   

Rollbacks:

0.0

0.0

   

Transactions:

0.3

     

Redo size


你在数据库所做的一切都被redo(重做)保护。重做是所谓“change vectors(变化向量)”的集合,告诉 Oracle 如何在数据上重复操作,如果需要的话。尽管 SELECT 也可以产生一些 redo,但是 redo 的主要来源(在大约降序排序):INSERT,UPDATE 和 DELETE。对 INSERT 和 UPDATE,redo 大小接近创建或修改数据的数量。对与 DELETE,你只需要知道已删除行的rowid,以便重复操作,因此,如果数据行是“fat”,那么redo大小可能远小于已删除数据的大小。

高redo数值意味着,大量新的数据被保存到数据库中,或现有的数据发生很多的变化,即DML操作很频繁。

多高算高?数据库不一样,所以不存在通用的标准。不过,我发现每秒 redo 乘以 86,400 秒(24*60*60=86,400,一天的秒数)会很有用,并且把它与数据库的大小相比——如果数字是在同一量级(magnitude),那么这就让我很奇怪了。数据库的大小每隔几天增加一倍?或者几乎每天修改每一行吗?也许,有些正在发生的我不知道的事情?

如果发现 redo 代过高你会怎么做。留意任何可疑的DML活动。此外,务必看下“segments statistics”小结(physical writes 段、DB block changes 段等),看是否有任何线索。

Logical reads, block changes, physical reads/writes


简单来说,Logical reads 是数据库读取数据块的数量,包括 physical(例如,磁盘)reads,block changes 是自我描述。这些统计告诉我们报告时数据库活动的性质(多数在写,多数在读,读写都有一点)和规模。它也给出一个想法,缓存的数据如何在数据库更好地工作(但你也在“instance efficiencies”小节从buffer cache hit ratio直接看到)。

如果你发现该数值比预期(基于平时的数值,当前应用程序负载等)的高,那么你可以下钻到“SQL by logical reads” 和“SQL by physical reads”,看下是什么SQL语句造成的。

User calls


当一个数据库客户端要求服务器做某些事时,像logon、parse、execute、fetch 等,就叫 user call。这是相当有用的信息,因为它为其他统计设置了规模(如 commits、hard parses 等)。

特别是,当数据库正在执行很多次时,每个user call,这可能是一个迹象,过多的上下文切换(例如,由于不好的执行计划,SQL语句中的PL / SQL函数在过于频繁地被调用,因为一个糟糕的计划)。在这种情况下,看下“SQL ordered by executions”将是合乎逻辑的下一步。

Parses and hard parses


Parse是分析查询的文本(可选),优化执行计划。如果涉及优化执行计划,那么它是一个hard parse,否则soft parse。

正如我们都知道,Parse是昂贵的(性能明智)。过多Parse会导致非常讨厌的性能问题(一个时刻,你的数据库似乎很好,下一刻,就变成完全停顿)。过度Parse的另一个坏事是,它使故障排除性能较差的SQL 更 困难

多糟的hard parse是可以接受的?这取决于很多东西,像CPU数量,执行次数,执行计划对SQL参数有多敏感等等,但是,一个经验法则,低于每秒1个hard parse可能是好的,每秒100个以上就有问题了(如果数据库中有很多CPU,比如100个以上,这些数字会相应地扩大)。它还有助于看数量的硬盘解析%执行(the number of hard parses as % of executions)(特别是如果你在灰色地带)。

如果你怀疑过度Parse正在损害你数据库的性能:

1) 检查“time model statistics”小节(hard parse elapsed time、parse time elapsed 等等)

2) 看是否在在top-5 events有library cache 竞争的迹象

3) 看是否CPU有问题

如果证实你的怀疑,那么找到过度Parse源(对soft parse,使用“SQL by parse calls”;对hard parse,使用force_matching_signature),看是否可以修复它。

Sorts


排序操作消耗资源。此外,高昂的排序由于运行超出 TEMP 空间可能导致SQL失败。所以,很显然,排序越少越好(当你需要时,应该在内存中排序)。不过,我个人很少发现排序统计特别有用:通常情况下,如果高昂的排序正在损害你的SQL性能,那么你会首先发现它。

Logons

建立一个新的数据库连接是高昂的(在audit 或 trigger 情况下更高昂)。“Logon storms”被认为会产生非常严重的 性能问题。如果你怀疑 logons 高数量正在降低性能,那么检查“Time model statistics”中“connection management elapsed time”。

Executes


Executes 对分析性能很重要,但是我在上面“user calls”和“parses and hard parses”中已经说明。

Transactions


在一般(比如,创建理解报告其余部分的上下文)和特定(排除有关事务控制的性能问题)层次上,这是另一个非常重要的统计数据。AWR 报告提供了有关事务和回滚的信息,比如,计算两者之间提交数量的差异。回滚是昂贵的操作,并且,如果使用不当(即在测试的时候,测试后将数据库恢复到原来的状态),可能会导致性能问题,它可以通过控制数量减少回滚或调整回滚段。回滚也可以表明的一个分支代码失败,从而被迫回滚的结果(如果结果错误没有被适当处理或重新抛出的话,这可以被监控)。

过多的提交可以导致性能问题,通过 log file sync waits

多少算过多?这完全依赖于数据库。显然,OLTP 数据库的提交要超过 DWH,并且在 OLTP 数据库之间,数量可以改变几个数量级。对于我曾参与的数据库,每秒低于 10-20,不会有任何问题,超过 100-200 就会有问题了(当不确定时,看下“top timed events”节:如果没有“log file sync“等待,那么可能就没关系!)。

参考


AWR - Load Profile 节的更多相关文章

  1. AWR報告詳解

    AWR是Oracle  10g 版本 推出的新特性, 全称叫Automatic Workload Repository-自动负载信息库, AWR 是通过对比两次快照(snapshot)收集到的统计信息 ...

  2. 理论实践:循序渐进理解AWR细致入微分析性能报告

    1. AWR 概述 Automatic Workload Repository(AWR) 是10g引入的一个重要组件.在里面存贮着近期一段时间内(默认是7天)数据库活动状态的详细信息. AWR 报告是 ...

  3. 快速熟悉 Oracle AWR 报告解读

    目录 AWR报告简介 AWR报告结构 基本信息 Report Summary Main Report RAC statistics Wait Event Statistics 参考资料 本文面向没有太 ...

  4. Oracle的AWR报告分析

    * 定义:awr报告是oracle 10g下提供的一种性能收集和分析工具,它能提供一个时间段内整个系统资源使用情况的报告,通过这个报告,我们就可以了解一个系统的整个运行情况,这就像一个人全面的体检报告 ...

  5. AWR报告-数据库概要信息(一)

    Elapse time为两个Snap时间间隔,相当于取样时间差 DB Time : db time= cpu time + wait time(不包含空闲等待)(非后台进程)  说白了就是db tim ...

  6. oracle AWR深入研究分析,如何使用

    AWR的前身是statspack,当然现在还在,只不过大家都在使用AWR,因为它方便,简单,直观,形象. AWR是oracle内置工具,安装oracle时已经自动安装完毕,无需额外安装了. SELEC ...

  7. Oracle AWR报告指标全解析-11011552

    1-5 Top 5 Timed EventsWaits : 该等待事件发生的次数, 对于DB CPU此项不可用Times : 该等待事件消耗的总计时间,单位为秒, 对于DB CPU 而言是前台进程所消 ...

  8. maclean-【性能调优】Oracle AWR报告指标全解析 学习笔记

    原文链接:http://www.askmaclean.com/archives/performance-tuning-oracle-awr.html AWR小技巧 手动执行一个快照: Exec dbm ...

  9. Oracle AWR 报告详解

    转自:http://blog.csdn.net/laoshangxyc/article/details/8615187 持续更新中... Oracle awr报告详解 DB Name DB Id In ...

随机推荐

  1. linux 内核升级 转

    inux 内核升级 2011-03-25 23:13:28 分类: LINUX 因要测试一些软件,需要2.6.30以上的内核,安装好CentOS 5.5,内核是2.6.18-194.el5.这次的升级 ...

  2. .NET开源分布式日志框架ExceptionLess实战演练(公开版)

    一.课程介绍 在以前,我们做日志收集大多使用 Log4net,Nlog 等框架,在应用程序变得复杂并且集群的时候,可能传统的方式已经不是很好的适用了,因为收集各个日志并且分析他们将变得麻烦而且浪费时间 ...

  3. AngularJS路由系列(5)-- UI-Router的路由约束、Resolve属性、路由附加数据、路由进入退出事件

    本系列探寻AngularJS的路由机制,在WebStorm下开发.主要包括: ● UI-Router约束路由参数● UI-Router的Resolve属性● UI-Router给路由附加数据● UI- ...

  4. AutoMapper在MVC中的运用07-映射在订单场景的例子

    本文参考了Taswar Bhatti的博客,他写了<Instant AutoMapper>这本书.遗憾的是,这本电子版书在国内还买不到,也下载不到.也只能从他的有限几篇博文中来窥探一二了. ...

  5. Java泛型中的标记符含义:

    Java泛型中的标记符含义: E - Element (在集合中使用,因为集合中存放的是元素) T - Type(Java 类) K - Key(键) V - Value(值) N - Number( ...

  6. Getting OS version with NDK in C c++获得版本号

    http://stackoverflow.com/questions/19355783/getting-os-version-with-ndk-in-c #include <cutils/pro ...

  7. Java_集合操作_将元素插入List的指定位置

    package test; import java.util.ArrayList; import java.util.List; public class test { public static v ...

  8. UITextField的简易封装

    UITextField的简易封装 效果 源码 https://github.com/YouXianMing/UI-Component-Collection 中的 UITextFieldView // ...

  9. 递归搜寻NSString中重复的文本

    递归搜寻NSString中重复的文本 效果 源码 https://github.com/YouXianMing/iOS-Project-Examples 中的 StringRange 项目 // // ...

  10. 【转】解决Android因加载多个大图引起的OutOfMemoryError,内存溢出的问题

    本文来自:http://blog.csdn.net/wulianghuan/article/details/11548373,感谢原作者的分享. 目标是读取SD卡中的图片并且展示出来 主要思路是通过一 ...