DB2:DB2TOP解析

简介

db2top提供了对整个数据库的性能监控。

db2top一般有两种运行模式:交互模式和批量模式。

我们平时用的那种带界面的,输入命令后等待系统响应的,就是交互模式

批量模式就是用命令行的形式,输入指令打印结果。

2023-6-29 16:59:19 这个是21年年中的时候记录的,当时因为工作需要,所以搜集了挺多相关资料,但是都语焉不详,自己也没研究懂,所以这篇笔记就只是稍作了解析,仅供参考。

主界面功能介绍

在这里插入图片描述

db2top命令,进入后主界面是这样的,点击不同的按键选择不同的监控选项,记得区分大小写

T:表监控,监控数据库中的表信息,包括表的当前使用信息和本身的属性信息。

快捷设置

进入session界面后,点击不同的按键有不同的效果

A:弹出输入行,输入application handle之后,回车,可查看详情;

在这里插入图片描述

Z:输入列号,可按照指定列排序;

数据库监控(d)

在这里插入图片描述

数据库监控界面,为整个数据库提供了一整套性能的监控。

当某个要素的使用率急剧升高甚至达到百分之百的时候,用户应该研究相关的原因。

start time:记录数据库上一次的启动时间,通过与当前时间做差,可以得到本次数据库已经持续运行了多长时间。

LockUsed:锁使用

LockEscals:锁升级

L_Reads:逻辑读

P_Reads:物理读

A_Reads:异步读

HitRatio:命中率

上面四个监控变量可以用来衡量大多数读操作是发生在内存IO还是磁盘IO。磁盘IO比内存慢很多,尽量用内存读。

命中率降低时,需要关注缓存池是否不足,是否有太多表扫描和内存磁盘交换。

A_Writes:异步写,表示在需要缓存池空间之前,数据页是通过异步页清除器代理执行写操作的。

似乎可以通过计算A_Writes/Writes的最大值来得知的写I/O的最佳性能,这个我后来没有再深入了解过。

SortOvf:表示排序溢出,如果这个值非常高,那需要查看下查询语句。排序溢出发生在排序堆不足时,sort或者HashJoin操作会把数据溢出到临时空间去。有时候,SortOvf值会因为排序堆调大而下降,但在其他的情况下,如果被排序的数据套比收集到的排序堆的内存大很多,则不起作用。如果数据量需要比缓存池临时空间的承受能力大,就需要使用物理IO来处理sort或者hash join。因此,优化你的查询来避免或减少排序溢出,能够显著的提高系统的性能。

AvgPRdTime:平均物理读取时间

AvgDRdTime:平均直接读取时间

AvgPWrTime:平均物理写入时间

AvgDWrTime:平均直接写入时间

这四个条目直接反映了IO子系统的性能。应该避免这些条目中存在不寻常的大量时间消耗。

正常情况下,DB2的排序发生在内存中,这块内存叫做排序堆,即SORTHEAP。当需要排序的数据量超过了排序堆的大小后,就会发生排序溢出。溢出的数据会被写到临时表中,这会产生更多的IO,对查询性能有较大影响。

表空间监控(Tablespace)(t)

在这里插入图片描述

表空间监控,提供每个表空间的详细信息。

Hit Ratio%:缓冲池命中率

Async Read%:

Delta l_reads/s:增量逻辑读取

Delta p_reads/s:增量物理读取

反映了这些表空间有多忙碌。

一些表空间可能并没有很高的缓冲池命中率,但他们也可能没有太多的活动。

可以通过点击方向左键和右键,来滚动屏幕查看更多列。

Avg RdTime:平均读时间

Avg WrTime:平均写时间

Space Used:表空间使用大小

Total Size:表空间总大小

%Full:表空间大小的使用率

监控每个表空间的空间使用情况。

Tbspce Type:表空间类型,DMS或者SMS(疑似是)

动态SQL监控(Dynamic SQL)(D)

在这里插入图片描述

动态SQL监控界面,提供了每一个缓存的SQL语句的详细信息。并给指定查询生成db2expln和db2exfmta。

Num Execution:执行次数,反映指定查询执行了多少次

Avg ExecTime:平均执行时间,反映指定查询的平均运行时间是多少。

Avg CPUTime:平均CPU时间。

Avg CPUTime跟Avg ExecTime进行比较,可以了解到指定sql花在CPU运算上的时间百分比,或者是花在等待锁或IO的时间百分比。能够看出来该SQL的运行时间是花在CPU上,还是花在等待锁或者IO上。

AvgSort PerExec:平均每次执行排序的次数

Sort Time:排序时间我感觉应该是累计的总时间吧。。。

可以反映执行期间的排序情况。

Index Hit%:索引的命中率

Temp_l_reads:临时空间的逻辑读取???

这两个条目可以帮助用户关注缓冲池大小是否需要调整。

动态SQL监控界面下,还提供了生成db2expln和db2exfmt报告的功能。通过在动态SQL监控模式下输入大写字母L,然后键入SQL对应的HashValue字符串,就可以。这个功能在session监控界面也有提供

表监控(T)

表监控显示表信息。也是很重要的一个监控。

在当前时间未被访问到的空闲表以白色显示。正在访问(活动)的表以绿色显示

在这里插入图片描述

界面是这样的,下面以此解析一下每部分。

Delta RowsRead(written)/s 表示在使用时间内,读写的行除以时间间隔。这个数值表示表在当前时间内的使用频率。(我是不是可以这么理解,每秒从表里读取的数据行数?但是每个表内字段数不一样啊,行不是一致的概念吧???)

Rows Overflows / s 表示当前,每秒有多少行数据发生了溢出。溢出的表会产生数据碎片,如果这个列数值过高,那么需要使用reorg重新构建表来清除碎片。

Data Pages:列数据页

Index Pages:索引页

Table Type:表类型

Table Size:表大小

会话监控(session)(l)

在这里插入图片描述

提供每个应用程序会话的详细信息。

中间最顶上那个表格:似乎跟我原先理解的并不一样

r+w/sec%:这个怎么感觉像是,在整体IO里,r和w所占得比例?即每个时刻,r占多少,w占多少。

Sys/Usr Cpu%:跟上面差不多,感觉像是sys_cpu_time和usr_cpu_time的占用比例,即体现当前时刻,是sys多一些还是usr多一些。

似乎又不能这么理解,我整个人已经没了

难道是DB2执行sql的时候,每次都会使用全部资源?然后大家一起争抢?所以没必须展示当前消耗资源占总资源比例?因为一个应用就会占100%??

application handle:表示每个应用的句柄

CPU%total:应用消耗CPU计算资源,占所有session消耗资源的百分比。以下两项以此类推

(stmt_usr_cpu_time + stmt_sys_cpu_time)
/
sum(stmt_usr_cpu_time + stmt_sys_cpu_time) * 100%

IO%total:

MEM%total:

在大多数情况下,每个会话表示一个连接。(就是说,有存在多个会话表示一个连接的情况?)

Log Used:事务日志的占用

Application Status: 可通过参考文献1,来查看application status可选的值

在session监控界面,点击小写字母a,然后输入想要查看的句柄号,回车之后即可进入该应用会话的详情界面。

参考文献:

  1. db2top sessions screen

缓冲池监控(Bufferpool)(b)

提供关于每个缓冲池利用率的信息

在这里插入图片描述

这里没看懂,就没放。

锁监控(Locks)(U)

在这里插入图片描述

可以很容易的列出应用程序锁持有的锁。并且可以很方便的进行锁链分析。

application status:应用状态,lock waiting表示当前应用被卡在锁等待状态,

直接查看锁监控界面,有时候并不是很容易弄清锁等待的关系,尤其是有多个应用涉及的时候,所以db2top提供了一个有用的特性来动态的绘制当前的锁链,在锁监控界面输入大写L!

类似:

在这里插入图片描述

应该是表示,应用24在等待应用9的锁,而应用26在等待应用24的锁。

如果查看不到的话,就说明当前没有锁链。

瓶颈监控(Bottleneck)(B)

在这里插入图片描述

这部分主要是显示,对于每一种系统资源,哪个应用(agent)占用最大。

瓶颈分析对于一个DBA来说,是不能忽视的,根据瓶颈监控,DBA可以知道是哪个应用严重的限制了系统的性能。

  • CPU:哪个agent消耗了最多的CPU时间
  • SessionCpu:哪个application session消耗了最多的CPU时间
  • IO r/w:哪个应用消耗了最多的IO资源
  • memory:哪个agent消耗了最多的内存
  • Locks:哪个应用拿了最多的锁
  • sorts:哪个应用执行了最大数量的排序
  • sort times:哪个应用消耗了最长的排序时间
  • Log used:哪个应用消耗了最多的日志空间
  • overflows:最多的排序溢出????啥意思
  • RowsRead:读了最多的行
  • RowsWritten:写了最多的行
  • TQ r/w:在table queues中,发送和接收了最多的行
  • MaxQueryCost:由compiler估计的最大的sql执行时间
  • XDAPages:对XDA数据来说,哪个应用有最多的页

resourcevalues是什么???resourceValues好像就是实际占用的值,就比如memory占用,的确就是37.1M。

load监控(Utilities)(u)

在这里插入图片描述

这个界面是用来监控数据库的load情况,使用db2 load来导数的,从这里可以查看load进度。

参考文献

  1. db2top操作手册 参考文献1和2比较像
  2. db2top工具详解(翻译)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值