暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

AWR报告分析之一:高 DB CPU 消耗的性能根源

原创 eygle 2012-11-22
1306

准备写一个系列,跟进一些AWR报告,做一些简单分析,从中表达一些思路和想法,这些AWR报告可能来自公众发布,在这里予以引用。


以下这份AWR报告的TOP 5 Event可以看出,其CPU消耗超高,占 42.59% 的事件比例,而Log File Sync单次等待达到12毫秒,这表明IO可能存在迟缓:














































EventWaitsTime(s)Avg wait (ms)% DB timeWait Class
DB CPU 22,574 42.59 
log file sync25,313310120.58Commit
db file sequential read10,6452420.05User I/O
direct path read9,1912220.04User I/O
enq: TX - row lock contention1154550.01Application



这个报告来自60分钟的数据库采样:



































Snap IdSnap TimeSessionsCursors/Session
Begin Snap:660319-Nov-12 08:00:152612.2
End Snap:660419-Nov-12 09:00:202603.0
Elapsed: 60.09 (mins)  
DB Time: 883.34 (mins)  



关注一下负载概要信息,数据库每秒仅仅折合4.8个事务,而此前的LOG File Sync等待较高,这说明IO资源可能被其他操作占用,事务之外,就是查询,也就是说,可能有大量低效查询消耗尽了IO资源:















































































































Per SecondPer TransactionPer ExecPer Call
DB Time(s):14.73.00.070.02
DB CPU(s):6.31.30.030.01
Redo size:55,291.811,421.6  
Logical reads:662,383.2136,828.5  
Block changes:189.939.2  
Physical reads:7.01.5  
Physical writes:19.94.1  
User calls:883.5182.5  
Parses:21.14.4  
Hard parses:3.40.7  
W/A MB processed:1,170.6241.8  
Logons:1.20.3  
Executes:214.944.4  
Rollbacks:0.00.0  
Transactions:4.8  



通过SQL的SQL逻辑读部分,可以发现导致异常的SQL查询,前两个SQL供占72.27的逻辑读,显然是这两条SQL消耗了IO资源:






























































































































Buffer GetsExecutionsGets per Exec%TotalElapsed Time (s)%CPU%IOSQL IdSQL ModuleSQL Text
1,171,388,99690,76412,905.8849.0530,514.2044.7008v35uwaj38aaJDBC Thin Clientselect * from ( select row_.*,...
554,429,81342,29913,107.4023.229,923.2340.90btn84j9rhuf4hJDBC Thin Clientselect * from ( select row_.*,...
503,809,511127,5063,951.2621.107,669.5237.30cp9wdanzmzj4qJDBC Thin Clientselect * from (select JOBID, S...
30,497,0692,33113,083.261.28409.6342.20fqjyuzjgm89qvJDBC Thin Clientselect * from ( select trunc(P...
24,457,8021,60715,219.541.02208.9045.408tptxzh309razJDBC Thin Clientselect this_.PID as PID10_0_, ...
10,935,2413,7912,884.530.46462.8340.409dpwkhfwnqfqaJDBC Thin Clientselect * from (select JOBID, S...
8,294,72079910,381.380.3573.1040.100nn3rt489dkqzJDBC Thin Clientselect * from ( select row_.*,...
8,090,72458113,925.510.34209.7943.305902s014jdg6nJDBC Thin Clientselect * from ( select trunc(P...
4,568,22012337,140.000.1919.8337.9055u237k35a317JDBC Thin Clientselect * from ( select rownum ...
4,151,73131613,138.390.1728.9537.80d1515xp5t2xtwJDBC Thin Clientselect * from (select JOBID, S...



在"Segments by Logical Reads"部分可以看到,逻辑读集中在一个对象上,第一位的表分区占用89.86%的逻辑读:



















































OwnerTablespace NameObject NameSubobject NameObj. TypeLogical Reads%Total
NCSSNCSSJOBSITE00STU_SEARCHJOBSITE00TABLE PARTITION2,145,895,02489.86
STPSUSERSTPS2TEACHER_INFO TABLE35,438,1441.48
NCSSNCSS_INDEXSTU_SEARCHJOB_PK INDEX18,438,3840.77
NCSSNCSSJOBSITE0000STU_SEARCHJOBSITE2101TABLE PARTITION17,049,4880.71
NCSSNCSSSTU_BASICINFO TABLE5,766,4480.24



接下来如果考察SQL,观察其执行计划,就应该能够发现,可能是索引缺失导致了全表或全分区的扫描。


AWR报告参考链接:






「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论