Db2 使数据均匀地分布在不同表空间不一定能加快备份速度
我们知道,为了加快Db2备份速度,一个很重要的建议是数据量在各个表空间的分布要均匀,这样做的好处是使个每个db2bm EDU的工作量都基本一致,不会有空闲的db2bm EDU。但这样能提高性能的前提是CPU、内存、I/O没有瓶颈,否则反而可能会降低性能。
先看一下某次备份的性能数据,可以看到所有db2bm EDU花费了560.91秒,仅WaitQ就占用了408.54秒,占比高达72.8%。说明大部分db2bm EDU都在等着做事,比较空闲。导致这种现象的原因就是表空间的数据分布不均匀,从BM#部分最后一列的KBytes也能看出来
2018-02-28-06.47.20.921681-480 E548681E1520 LEVEL: Info
PID : 2590 TID : 140213653333760 PROC : db2sysc 0
INSTANCE: inst105 NODE : 000 DB : SAMPLE
APPHDL : 0-152 APPID: *LOCAL.inst105.180228144458
AUTHID : INST105 HOSTNAME: db2a
EDUID : 216 EDUNAME: db2agent (SAMPLE) 0
FUNCTION: DB2 UDB, database utilities, sqluxLogDataStats, probe:395
MESSAGE : Performance statistics
DATA #1 : String, 1016 bytes
Parallelism = 4
Number of buffers = 4
Buffer size = 16388096 (4001 4kB pages)
BM# Total I/O MsgQ WaitQ Buffers kBytes
--- -------- -------- -------- -------- -------- --------
000 140.23 11.29 0.02 128.72 10 119264
001 140.22 139.54 0.00 0.18 178 2837632
002 140.22 0.42 0.00 139.79 1 1904
003 140.22 0.38 0.00 139.83 1 1920
--- -------- -------- -------- -------- -------- --------
TOT 560.91 151.65 0.02 408.54 190 2960720
MC# Total I/O MsgQ WaitQ Buffers kBytes
--- -------- -------- -------- -------- -------- --------
000 140.94 11.64 128.58 0.01 191 3024788
--- -------- -------- -------- -------- -------- --------
TOT 140.94 11.64 128.58 0.01 191 3024788
下面是采用手段将数据均匀分布到每个表空间之后的备份性能数据,可以看到db2bm EDU的WaitQ占比降低了许多,每个db2bm处理的数据量也均衡了许多,但总的备份时间却由原来的140.94秒增加到178.54秒,这里的瓶颈就在I/O上,由于只有一块磁盘,并行的I/O效率降低了:
2018-02-28-06.56.00.179297-480 E582193E1520 LEVEL: Info
PID : 2590 TID : 140213733025536 PROC : db2sysc 0
INSTANCE: inst105 NODE : 000 DB : SAMPLE
APPHDL : 0-172 APPID: *LOCAL.inst105.180228145300
AUTHID : INST105 HOSTNAME: db2a
EDUID : 200 EDUNAME: db2agent (SAMPLE) 0
FUNCTION: DB2 UDB, database utilities, sqluxLogDataStats, probe:395
MESSAGE : Performance statistics
DATA #1 : String, 1016 bytes
Parallelism = 4
Number of buffers = 4
Buffer size = 16388096 (4001 4kB pages)
BM# Total I/O MsgQ WaitQ Buffers kBytes
--- -------- -------- -------- -------- -------- --------
000 177.68 147.74 2.32 27.52 40 593360
001 177.67 175.15 2.41 0.04 30 473472
002 177.65 173.61 2.32 1.34 60 946944
003 177.67 165.58 3.18 8.76 60 946944
--- -------- -------- -------- -------- -------- --------
TOT 710.68 662.09 10.25 37.69 190 2960720
MC# Total I/O MsgQ WaitQ Buffers kBytes
--- -------- -------- -------- -------- -------- --------
000 178.54 12.26 165.38 0.00 191 3024788
--- -------- -------- -------- -------- -------- --------
TOT 178.54 12.26 165.38 0.00 191 3024788
我们知道,为了加快Db2备份速度,一个很重要的建议是数据量在各个表空间的分布要均匀,这样做的好处是使个每个db2bm EDU的工作量都基本一致,不会有空闲的db2bm EDU。但这样能提高性能的前提是CPU、内存、I/O没有瓶颈,否则反而可能会降低性能。
先看一下某次备份的性能数据,可以看到所有db2bm EDU花费了560.91秒,仅WaitQ就占用了408.54秒,占比高达72.8%。说明大部分db2bm EDU都在等着做事,比较空闲。导致这种现象的原因就是表空间的数据分布不均匀,从BM#部分最后一列的KBytes也能看出来
2018-02-28-06.47.20.921681-480 E548681E1520 LEVEL: Info
PID : 2590 TID : 140213653333760 PROC : db2sysc 0
INSTANCE: inst105 NODE : 000 DB : SAMPLE
APPHDL : 0-152 APPID: *LOCAL.inst105.180228144458
AUTHID : INST105 HOSTNAME: db2a
EDUID : 216 EDUNAME: db2agent (SAMPLE) 0
FUNCTION: DB2 UDB, database utilities, sqluxLogDataStats, probe:395
MESSAGE : Performance statistics
DATA #1 : String, 1016 bytes
Parallelism = 4
Number of buffers = 4
Buffer size = 16388096 (4001 4kB pages)
BM# Total I/O MsgQ WaitQ Buffers kBytes
--- -------- -------- -------- -------- -------- --------
000 140.23 11.29 0.02 128.72 10 119264
001 140.22 139.54 0.00 0.18 178 2837632
002 140.22 0.42 0.00 139.79 1 1904
003 140.22 0.38 0.00 139.83 1 1920
--- -------- -------- -------- -------- -------- --------
TOT 560.91 151.65 0.02 408.54 190 2960720
MC# Total I/O MsgQ WaitQ Buffers kBytes
--- -------- -------- -------- -------- -------- --------
000 140.94 11.64 128.58 0.01 191 3024788
--- -------- -------- -------- -------- -------- --------
TOT 140.94 11.64 128.58 0.01 191 3024788
下面是采用手段将数据均匀分布到每个表空间之后的备份性能数据,可以看到db2bm EDU的WaitQ占比降低了许多,每个db2bm处理的数据量也均衡了许多,但总的备份时间却由原来的140.94秒增加到178.54秒,这里的瓶颈就在I/O上,由于只有一块磁盘,并行的I/O效率降低了:
2018-02-28-06.56.00.179297-480 E582193E1520 LEVEL: Info
PID : 2590 TID : 140213733025536 PROC : db2sysc 0
INSTANCE: inst105 NODE : 000 DB : SAMPLE
APPHDL : 0-172 APPID: *LOCAL.inst105.180228145300
AUTHID : INST105 HOSTNAME: db2a
EDUID : 200 EDUNAME: db2agent (SAMPLE) 0
FUNCTION: DB2 UDB, database utilities, sqluxLogDataStats, probe:395
MESSAGE : Performance statistics
DATA #1 : String, 1016 bytes
Parallelism = 4
Number of buffers = 4
Buffer size = 16388096 (4001 4kB pages)
BM# Total I/O MsgQ WaitQ Buffers kBytes
--- -------- -------- -------- -------- -------- --------
000 177.68 147.74 2.32 27.52 40 593360
001 177.67 175.15 2.41 0.04 30 473472
002 177.65 173.61 2.32 1.34 60 946944
003 177.67 165.58 3.18 8.76 60 946944
--- -------- -------- -------- -------- -------- --------
TOT 710.68 662.09 10.25 37.69 190 2960720
MC# Total I/O MsgQ WaitQ Buffers kBytes
--- -------- -------- -------- -------- -------- --------
000 178.54 12.26 165.38 0.00 191 3024788
--- -------- -------- -------- -------- -------- --------
TOT 178.54 12.26 165.38 0.00 191 3024788