db2trc 命令是 DB2 提供的跟踪工具。该跟踪工具记录有关操作的信息并将此信息格式化为可读格式。
需要注意的是,运行跟踪时会增加开销,所以启用跟踪工具可能会影响系统性能。
db2trace 可以跟踪每个函数以及该函数的执行时间。
利用这一性质,我们可以计算出来每次写日志花费的时间以及 HADR 带来的开销。
首先,我们需要找到主机上的写日志的 EDU(Engine Dispatchable Unit),即 db2loggw 的线程号
####获得db2sys的进程号
$ ps -ef | grep -i db2sys | grep -i instref
instref 15597584 14483602 3 10:24:08 - 6:33 db2sysc 0
####获得db2loggw的EDU号
$ db2pd -edus | grep -i db2loggw
4372 4372 91947227 db2loggw (CTMPREF) 0 8.587111 3.557958
####打开db2trc监控,写入文件中
$ db2trc on -t -p 15597584.4372 -f trace.dump
Trace is turned on
####执行一些db2 transactions操作
####关闭监控
$ db2trc off
Trace is turned off
####格式化文件输出
$ db2trc flow -t trace.dump trace.flow
Total number of trace records : 861
Trace truncated : NO
Trace wrapped : NO
Number of trace records formatted : 861 (pid: 15597584 tid 4372 node: 0)
解读文件
263 18.318085568 sqlpgwlp entry [eduid 4372 eduname db2loggw]
..................................
359 18.319165218 | sqloWaitEDUWaitPost entry [eduid 4372 eduname db2loggw]
360 18.438925718 | sqloWaitEDUWaitPost exit
..................................
369 18.438940500 sqlpgwlp exit
找到 sqlpgwlp 函数,
找到这个函数内的 sqloWaitEDUWaitPost
计算 sqlpgwlp 的执行时间。T1 = 18.438940500 - 18.318085568 = 0.120854932
计算 sqloWaitEDUWaitPost 的执行时间。T2 = 18.438925718 - 18.319165218 = 0.119760500
T1 是完成这次写日志的总时间,T2 就是这次写日志时,HADR 带来的开销
如果我们跟踪了多次写日志的操作,就跟得到多个上面的片段。可以根据所有的片段计算平均值,从而得到更精确地开销比例。
当前标题:DB2HADR对性能的影响-创新互联
文章来源:http://scgulin.cn/article/dcgpsc.html