问题描述:
最近一次表空间扩容,环境是DB2 10.1FP4,Suse 11.3,文件系统使用的是Symantec StorageFoundation,有个表空间共32个容器,每个容器大小都是20G,打算扩容这个表空间,于是使用了resize (all 24G)的命令,db2 "alter tablespace tbs resize (all 24G)",执行完成后发现 tbs开始rebalance了,这个有点奇怪,我是在现有的container增加空间,不会影响表空间的HWM,为什么会触发rebalance呢?
问题分析:
查看表空间的snapshot,发现这个表空间的映射有点奇怪(这个是rebalance完成后的),container大小都是一样,为什么映射是这样的?
Range Stripe Stripe Max Max Start End Adj. Containers
Number Set Offset Extent Page Stripe Stripe
[ 0] [ 0] 0 163835 5242751 0 40958 0 4 (0,1,2,3)
[ 1] [ 0] 0 237563 7602047 40959 49150 0 9 (0,1,2,3,4,5,6,7,8)
[ 2] [ 0] 0 401398 12844767 49151 81917 0 5 (4,5,6,7,8)
[ 3] [ 0] 0 499702 15990495 81918 90109 0 12 (4,5,6,7,8,9,10,11,12,13,14,15)
[ 4] [ 0] 0 600054 19201759 90110 104445 0 7 (9,10,11,12,13,14,15)
[ 5] [ 0] 0 1212383 38796287 104446 131068 0 23 (9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31)
[ 6] [ 0] 0 1572831 50330623 131069 153596 0 16 (16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31)
查了信息中心,有一些关于tablespace map的说明,但没有很确切说明问什么会引起rebalance,我坚信本次问题是和表空间分布有关,于是做了一些表空间扩容的测试,最终重现了该现象。
实验测试:
===测试1:增加数据库文件,新增数据文件大于原有的数据文件===
最初表空间分布
db2 get snapshot for tablespaces on sampledb >> ts1.out
Table space map:
Range Stripe Stripe Max Max Start End Adj. Containers
Number Set Offset Extent Page Stripe Stripe
[ 0] [ 0] 0 77 2495 0 38 0 2 (0,1)
执行
db2 "alter tablespace USERSP4 add (file '/db2data/db2inst1/sampledb/data/usersp4_c03' 20M, file '/db2data/db2inst1/sampledb/data/usersp4_c04' 20M)"
查看表空间分布
db2 get snapshot for tablespaces on sampledb >> ts2.out
Table space map:
Range Stripe Stripe Max Max Start End Adj. Containers
Number Set Offset Extent Page Stripe Stripe
[ 0] [ 0] 0 155 4991 0 38 0 4 (0,1,2,3)
[ 1] [ 0] 0 235 7551 39 78 0 2 (2,3)
执行
db2 "alter tablespace USERSP4 resize (all 20M)"
查看表空间分布
db2 get snapshot for tablespaces on sampledb >> ts3.out
Table space map:
Range Stripe Stripe Max Max Start End Adj. Containers
Number Set Offset Extent Page Stripe Stripe
[ 0] [ 0] 0 315 10111 0 78 0 4 (0,1,2,3)
自动降表空间分布规整了。
===测试2:增加数据库文件,新增数据文件小于原有的数据文件===
最初表空间分布
db2 get snapshot for tablespaces on sampledb >> ts1.out
Table space map:
Range Stripe Stripe Max Max Start End Adj. Containers
Number Set Offset Extent Page Stripe Stripe
[ 0] [ 0] 0 77 2495 0 38 0 2 (0,1)
执行
db2 "alter tablespace USERSP4 add (file '/db2data/db2inst1/sampledb/data/usersp4_c03' 5M, file '/db2data/db2inst1/sampledb/data/usersp4_c04' 5M)"
查看表空间分布
db2 get snapshot for tablespaces on sampledb >> ts4.out
Table space map:
Range Stripe Stripe Max Max Start End Adj. Containers
Number Set Offset Extent Page Stripe Stripe
[ 0] [ 0] 0 39 1279 0 19 0 2 (0,1)
[ 1] [ 0] 0 115 3711 20 38 0 4 (0,1,2,3)
执行
db2 "alter tablespace USERSP4 resize (all 10M)"
查看表空间分布
db2 get snapshot for tablespaces on sampledb >> ts5.out
Range Stripe Stripe Max Max Start End Adj. Containers
Number Set Offset Extent Page Stripe Stripe
[ 0] [ 0] 0 39 1279 0 19 0 2 (0,1)
[ 1] [ 0] 0 115 3711 20 38 0 4 (0,1,2,3)
[ 2] [ 0] 0 155 4991 39 58 0 2 (2,3)
resize all命令执行后,表空间分布没有自动规整好!!
db2 "alter tablespace USERSP4 resize (all 20M)"
db2 get snapshot for tablespaces on sampledb >> ts6.out
Table space map:
Range Stripe Stripe Max Max Start End Adj. Containers
Number Set Offset Extent Page Stripe Stripe
[ 0] [ 0] 0 39 1279 0 19 0 2 (0,1)
[ 1] [ 0] 0 275 8831 20 78 0 4 (0,1,2,3)
[ 2] [ 0] 0 315 10111 79 98 0 2 (2,3)
再次执行resize (all 20M)进行表空间扩容,表空间分布还是没有自动规整!
db2 "alter tablespace USERSP4 resize (all 30M)"
db2 get snapshot for tablespaces on sampledb >> ts7.out
Table space map:
Range Stripe Stripe Max Max Start End Adj. Containers
Number Set Offset Extent Page Stripe Stripe
[ 0] [ 0] 0 39 1279 0 19 0 2 (0,1)
[ 1] [ 0] 0 435 13951 20 118 0 4 (0,1,2,3)
[ 2] [ 0] 0 475 15231 119 138 0 2 (2,3)
再次执行resize (all 30M)进行表空间扩容,表空间分布还是没有自动规整!
如果执行完resize (all 20M)后,表空间使用率很高了,比如使用到了第三个Stripe,即276号extent以后的空间,再执行resize (all 30M)后,276号开始的extent会触发rebalance
结论
:通过以上测试可以看到DB2在增加新的数据文件的时候,如果新增数据文件大于原来的数据文件,使用resize命令可以自动规整表空间分布;如果新增数据文件小于原来的数据文件,使用resize命令无法自动规整表空间分布,导致数据分布不整齐,可能在扩容期间会引起表空间rebalance。
建议DB2每次增加数据文件,与原来的数据文件大小一致,或者至少比原来的数据文件大。
还有一个疑问:如果出现了这种数据文件不对齐的现象,如何才能让数据文件变为规整?
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/802647/viewspace-2141095/,如需转载,请注明出处,否则将追究法律责任。