首页 > 其他分享 >14. Awr报告指标查看

14. Awr报告指标查看

时间:2023-02-19 18:59:21浏览次数:57  
标签:sequential 读取 查看 read Awr session file 等待 14

AWR报告分析

1.1 AWR报告之DB time

  

  DB Time 主要用于判断当前系统有没有相关的瓶颈,是否较为频繁访问系统导致等待时间很长? 一般来说,Elapsed 时间乘以CPU个树,如果大于DB Time,就是正常的,系统压力不大,反之就说明压力较大。

1.2 AWR之load_profile

     load_profile 指标主要用来显示当前系统的一些指示性能的总体参数,

  这里的redo size有两个指标,一个是每秒产生的redo的大小,一个是每个事务产生的redo的大小,一般来说transactions不超过200都是正常的,或者200左右都是正常的,超多1000就是非常繁忙了,

1.3 AWR之Instance Efficiency Percentages

     efficiency percentages 是一些命中率指标,buffer hint、libray hint等表示SGA的命令率;soft parse指标表示共享池的软解析率,如果小于90%,就说明存在未绑定变量的情况。

   

一些命中率指标:

  • Buffer Nowait:表示在内存获得数据的未等待比例,理想状态是100%,如低于99%,则表示数据库可能存在资源争用情况。
  • Buffer Hit:表示进程从内存块中获得数据的比例。
  • Library Hit:如上文,软解析就是从库缓冲中获取到sql执行计划,这个比例太低会导致硬解析过多。
  • Execute to Parse:是语句执行与分析的比例,如果要SQL重用率高,则这个比例会很高。该值越高表示一次解析后被重复执行的次数越多。
  • Parse CPU to Parse Elapsed:解析实际运行时间/(解析实际运行时间+解析中等待资源时间),越高越好。如果该比率为100%,意味着CPU等待时间为0,没有任何等待。
  • Redo Nowait:在log缓冲区中不等待比例。
  • In-Memory Sort:在内存中排序的比率,如果过低说明有大量的排序在临时表空间中进行。考虑调大PGA(10g)。如果低于95%,可以通过适当调大初始化参数PGA_AGGREGATE_TARGET或者SORT_AREA_SIZE来解决,注意这两个参数设置作用的范围时不同的,SORT_AREA_SIZE是针对每个session设置的,PGA_AGGREGATE_TARGET则时针对所有的sesion的。
  • Soft Parse:软解析的百分比(Softs/Softs+Hards),近似当作sql在共享区的命中率,太低则需要调整应用使用绑定变量。sql在共享区的命中率,小于<95%,需要考虑绑定,如果低于80%,那么就可以认为sql基本没有被重用。
  • Latch Hit:Latch是一种保护内存结构的锁,可以认为是Server进程获取访问内存数据结构的许可。要确保Latch Hit>99%,否则意味着Shared Pool latch争用,可能由于未共享的SQL,或者Library Cache太小,可使用绑定变更或调大Shared Pool解决。要确保>99%,否则存在严重的性能问题。当该值出现问题的时候,我们可以借助后面的等待时间和latch分析来查找解决问题。

1.4 AWR之top 10 events

    top 10 Foreground Events by total wait time,等待事件是衡量数据库优化情况的重要指标,通过观察Event和%DB time两列就可以直观看出当前数据库的主要等待事件。

主要看这两列,看占用DB time的百分比。

几个常见的top事件:

  • db file scattered read:文件散列读取等待即多块读等待事件是当SESSION等待multi-block I/O时发生的,通常是由于full table scans或index fast full scans引起,Avg wait>20ms就要注意了,db file scattered read 异常大,可能是由于全表扫描引起

      该事件通常与全表扫描或者index fast full scan有关。因为全表扫描是被放入内存中进行的,通常情况下基于性能的考虑,有时候也可能是分配不到足够长的连续内存空间,所以会将数据块分散(scattered)读入Buffer Cache中。该等待过大可能是缺少索引或者没有合适的索引(可以调整optimizer_index_cost_adj) 。这种情况也可能是正常的,因为执行全表扫描可能比索引扫描效率更高。当系统存在这些等待时,需要通过检查来确定全表扫描是否必需的来调整。因为全表扫描被置于LRU(Least Recently Used,最近最少适用)列表的冷端(cold end),对于频繁访问的较小的数据表,可以选择把他们Cache 到内存中,以避免反复读取。当这个等待事件比较显著时,可以结合v$session_longops 动态性能视图来进行诊断,该视图中记录了长时间(运行时间超过6 秒的)运行的事物

  • DB file sequential read:单块读等待意味着发生顺序I/O读等待,如果这个等待严重,则应该对大表进行分区以减少I/O量,或者优化执行计划(通过使用存储大纲或执行数据分析)以避免单块读操作引起的sequential read等待,通常由于INDEX FULL SCAN/UNIQUE SCAN 、INDEX RANGE SCAN、行迁移或行链接引起,Avg wait>20ms就要注意了。

     这里的sequential指的是将数据块读入到相连的内存空间中(contiguous memory space),而不是指所读取的数据块是连续的。1、最为常见的是执行计划中包含了INDEX FULL SCAN/UNIQUE SCAN,此时出现”db file sequential read”等待是预料之中的3、当执行计划包含了INDEX RANGE SCAN-(“TABLE ACCESS BY INDEX ROWID”/”DELETE”/”UPDATE”), 服务进程将按照”访问索引->找到rowid->访问rowid指定的表数据块并执行必要的操作”顺序访问index和table,每次物理读取都会进入”db file sequential read”等待,且每次读取的都是一个数据块;这种情况下clustering_factor将发挥其作用(ALL_INDEXES的CLUSTERING_FACTOR*值来判断数据的离散程度)3、Extent boundary,假设一个Extent区间中有33个数据块,而一次”db file scattered read”多块读所读取的块数为8,那么在读取这个区间时经过4次多块读取后,还剩下一个数据块,但是请记住多块读scattered read是不能跨越一个区间的(span an extent),此时就会单块读取并出现”db file sequential read”。4、假设某个区间内有8个数据块,它们可以是块a,b,c,d,e,f,g,h,恰好当前系统中除了d块外的其他数据块都已经被缓存在buffer cache中了,而这时候恰好要访问这个区间中的数据,那么此时就会单块读取d这个数据块,并出现”db file sequential read”等待。注意这种情况不仅于表,也可能发生在索引上。

  • Buffer Busy Waits:该事件是在一个SESSION需要访问BUFFER CACHE中的一个数据库块而又不能访问时发生的(指的是多个session对于同一个block的写入竞争)出现在两个session都是写入时。
  • read by other session:多个session并发请求相同的数据块,但因该数据块不在buffer_cache中而必须从磁盘读取,处理这种情况,oracle会只让其中一个sesion进行磁盘读取,此时其它session等待块从磁盘上读取进buffer_cache而抛出read by other session等待事件。
  • gc buffer busy:相当于rac集群下的Buffer Busy Waits.
  • gc buffer busy acquire:与上面一致。

等待事件可以查看前面的文章:https://www.cnblogs.com/zmc60/p/17034679.html

 

标签:sequential,读取,查看,read,Awr,session,file,等待,14
From: https://www.cnblogs.com/zmc60/p/17135323.html

相关文章

  • 查看内核软中断信息
    软中断是在ksoftirqd内核线程中执行,所以软中断信息可以从/proc/softirqs读取。cat/proc/softirqsCPU0CPU1HI:1......
  • 性能测试-压力测试(最大用户数的20%或者80%)-查看结果数保存到文件(jtl格式)-生成测试报告
    1、压力测试阶梯性能场景(负载)得到最大并发用户数,然后压力测试用,最大用户数的20%或者80%持续运行一段时间,比如1个小时,10个小时,1天等时间可以用普通线程组,也能用阶梯线程组......
  • 14.分组函数
    1.分组函数分组函数是操作一个分组的结果集,将行分组,按照组产生一个结果集,常用的分组函数有:avg,count,max,min,stddev,sum,variancehr@ORCLPDB012023-02-1915:58:03>selecta......
  • Qt音视频开发14-音视频文件保存基类的设计
    一、前言视频综合应用示例,包括了多种内核,在保存文件这个功能上,需要一个通用的文件保存基类AbstractSaveThread,这个基类定义了是否打印线程消息标志位、直接写入还是排队写......
  • 读Java实战(第二版)笔记14_CompletableFuture及反应式编程背后的概念
    1. 潮流1.1. 与应用程序运行的硬件平台相关1.1.1. 编写能充分利用多核处理器能力的软件1.2. 与应用程序的结构相关1.2.1. 反映了互联网应用对可用性日益增长的需......
  • 【2023-02-14】夫妻真相
    20:00要善于珍惜爱情,年代愈久,愈要加倍珍惜。爱情不是月光下的散步,也不是长凳上的叹息。爱情中会有冯波和雨雪,因为一辈子要生活在一起!爱情正像一首好歌,可是编一首好歌却不......
  • 决战圣地玛丽乔亚Day14 ----Volatile关键字分析
    volatile:背景: CPU和主存读写速度不一致,出现了高速缓存。把一些经常读的数据存入高速缓存,交互计算和高速缓存进行,修改完毕后再从高速缓存刷回主存中。但是问题来了!CPU......
  • 2023/02/14刷题
    2023/02/14刷题B.KuriyamaMirai'sStones链接B.KuriyamaMirai'sStones这是一个前缀和问题,分别求一下原数组的前缀和和排序后数组的前缀和然后按照询问输出就可以......
  • Windows下面查看python安装路径的快捷方法
    在Windows(Win10-Win11)下面,查看python的安装路径,比较快捷的方法是:打开CMD窗口,运行wherepython便可以查看python安装路径,不同机器不一样:C:\Users\WinUser01\AppData\Loca......
  • linux014之进程和服务管理
    linux中的进程管理:查看进程命令:ps:查看应用级别的进程ps-e:查看系统+应用级的进程ps-ef:显示进程的全部信息(这个命令经常用)ps......