文章目录
- 简介
- 主界面功能介绍
- 快捷设置
- 数据库监控(d)
- 表空间监控(Tablespace)(t)
- 动态SQL监控(Dynamic SQL)(D)
- 表监控(T)
- 会话监控(session)(l)
- 缓冲池监控(Bufferpool)(b)
- 锁监控(Locks)(U)
- 瓶颈监控(Bottleneck)(B)
- load监控(Utilities)(u)
- 参考文献
简介
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,然后输入想要查看的句柄号,回车之后即可进入该应用会话的详情界面。
参考文献:
- 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进度。
参考文献
- db2top操作手册 参考文献1和2比较像
- db2top工具详解(翻译)