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

技术分享 | 数据库急救:ORACLE AWR报告解读之DB TIME

得帆信息 2020-08-13
2638
背景
AWR全称Automatic Workload Repository,自动负载信息库,是Oracle 10g版本后推出的一种性能收集和分析工具,提供了一个时间段内整个系统的报表数据。通过AWR报告,可以分析指定的时间段内数据库系统的性能。

物理CPU和逻辑CPU
首先得理解物理cpu和逻辑cpu的区别
物理cpu
比较好理解,就是主板上有几个cpu就有多少个物理CPU,每颗物理cpu有1个或者多个物理内核,每个内核都可以作为单独cpu使用,为了和物理cpu区分开,内核的cpu成为逻辑cpu,因此
逻辑cpu = 物理cpu * cpu核数

在开启超线程后,逻辑cpu计算如下:
逻辑cpu = 物理cpu * cpu核数 * 2

是没开启超线程之前的两倍。
在Linux中,cpu信息保存在 /proc/cpuinfo
文件中
# more proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 85
model name : Intel(R) Xeon(R) Platinum 8163 CPU @ 2.50GHz
stepping : 4
microcode : 1
cpu MHz : 2499.998
cache size : 33792 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 1
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 13
bogomips : 4999.99
clflush size : 64
cache_alignment : 64
address sizes : 46 bits physical, 48 bits virtual
power management:

processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 85
model name : Intel(R) Xeon(R) Platinum 8163 CPU @ 2.50GHz
stepping : 4
microcode : 1
cpu MHz : 2499.998
cache size : 33792 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 1
apicid : 1
initial apicid : 1
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
bogomips : 4999.99
clflush size : 64
cache_alignment : 64
address sizes : 46 bits physical, 48 bits virtual
power management:

从上面信息可以看出,physical id只有0,说明只有1个物理cpu,core id也只有0,说明是单线程,每个内核有两个逻辑cpu,说明开启了超线程。

下面是awr报告中关于cpu信息的参数

processor : 逻辑cpu编号
physical id: 物理cpu编号
core id: 内核编号

DB Time

awr中最重要的参数就是DB Time

Elapsed表示统计的时间范围,在导出awr报告时,可以选择导出的时间范围,DB Time表示操作系统耗费在数据库非线程等待的时间(DB Wiat Time)和数据库计算时间(DB Cpu Time)总和。怎么理解呢,操作系统上运行的进程,虽然我们看到的是一直在运行,但实际上大部分时间对于cpu来讲,都是等待cpu的执行,因为这个时间太短,所以给我们的感觉就是一直在运行,这个等待过程就是线程等待(Idle),如果用top命令查看进程,可以发现基本都是状态为S
也就是(Sleep)状态的,实际上,你也很难从top命令看到runing的进程,如果有个进程一直是running,那肯定是不正常的,会一直占着cpu。


还有一种就是非线程等待,比如在等待磁盘IO,网络IO等,DB Time统计的就是这部分时间,如果这个时间过长,说明IO存在问题,或者是数据库存在大量的锁。DB Cpu Time比较好理解,就是数据库执行的时间。

上面这个报告中:

Elapsed:	 	59.61 (mins)	 	 	 
DB Time: 7.57 (mins)

统计的时间是59.61分钟,DB Time是7.57分钟,说明数据库负载不大,下面这个报告问题就比较大

Elapsed是68.81分钟,DB Time达到了惊人的11888.92分钟,甚至超过了68.81*64=4403.84
的总和,说明数据库内部有大量的非线程等待事件,从Load Profile可以看出DB Time(s)是每秒172.8s,这个什么意思呢,就是1s内,数据库有172.8s是在等待,说明有大量的线程在等待,这个计算公式如下:
DB Time(s)=DB Time/Elapsed

172.8=11888.92/68.81

DB CPU(s)只有0.1s,说明这个172.8s中只有0.1s是在做数据库执行操作,其余时间都在等待。可以看Top N Timed Foreground Events
部分报告查看具体的等待事件

大量的时间耗费在了enq: HW - contention
DFS lock handle
上面,一个正常健康的数据库,DB cpu应该在最前面,否则说明系统大部分时间在等待事件上


小结:
通过AWR的报告解析,可以精准定位数据库可能存在的性能问题并进行优化。
不过指标较多,虽然有迹可循,但是也对专业能力有所要求,是否感觉到你的数据库没那么快了呢?AWR报告看起来!不会?
得帆公众号回复“数据库急救”,我们来帮你!


作者:剑峰,技术支持中心经理,得帆高级架构师。
项目经验:山东山推工程机械股份有限公司集成平台、北京器械检验所门户项目
百度财务流程中心项目、上海三菱电梯维保急修平台、上海通用汽车现场数字化管理平台、
得帆ESB接口平台项目、得帆快速开发平台。
擅长oracle中间件实施,企业单点登录集成,企业门户实施,企业流程中心开发和实施,中台的开发和实施,系统疑难问题的排查以及解决。




关于得帆



上海得帆信息技术有限公司(简称:得帆信息),公司注册在上海张江高科技园区,经过创始团队10年的经营发展,得帆信息已经成为中国在企业级中间件(ESB,Portal,BPM,微服务)和中间件云产品领域人员规模大、服务范围广、客户群体多的IT咨询服务公司之一。


经过10年的砥砺前行,拥有超过300+的大中型客户,实施超过1000+的中间件项目,每年收入50%以上来源于老客户,成为当之无愧的中间件技术服务领导者,用口碑和技术实力践行了得帆的使命“用信息技术帮助客户幸福和成功”。


得帆信息的服务领域包括企业级中台系统咨询和实施、ESB信息系统集成、BPM业务流程系统实施、企业集团全球官网实施、企业内网门户及身份管理实施、大数据规划和实施等服务,为推动客户在数字化,互联网+和工业4.0转型提供专业的信息化支撑和保障。

文章转载自得帆信息,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论