溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

DB2使用resize命令擴(kuò)容表空間引起rebalance問題的分析

發(fā)布時(shí)間:2020-08-10 19:31:42 來源:ITPUB博客 閱讀:335 作者:icycastle 欄目:數(shù)據(jù)庫
問題描述:
最近一次表空間擴(kuò)容,環(huán)境是DB2 10.1FP4,Suse 11.3,文件系統(tǒng)使用的是Symantec StorageFoundation,有個(gè)表空間共32個(gè)容器,每個(gè)容器大小都是20G,打算擴(kuò)容這個(gè)表空間,于是使用了resize (all 24G)的命令,db2 "alter tablespace tbs resize (all 24G)",執(zhí)行完成后發(fā)現(xiàn) tbs開始rebalance了,這個(gè)有點(diǎn)奇怪,我是在現(xiàn)有的container增加空間,不會(huì)影響表空間的HWM,為什么會(huì)觸發(fā)rebalance呢?


問題分析:
查看表空間的snapshot,發(fā)現(xiàn)這個(gè)表空間的映射有點(diǎn)奇怪(這個(gè)是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)


查了信息中心,有一些關(guān)于tablespace map的說明,但沒有很確切說明問什么會(huì)引起rebalance,我堅(jiān)信本次問題是和表空間分布有關(guān),于是做了一些表空間擴(kuò)容的測(cè)試,最終重現(xiàn)了該現(xiàn)象。

實(shí)驗(yàn)測(cè)試:
===測(cè)試1:增加數(shù)據(jù)庫文件,新增數(shù)據(jù)文件大于原有的數(shù)據(jù)文件===
最初表空間分布
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)


執(zhí)行
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)


執(zhí)行
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)
自動(dòng)降表空間分布規(guī)整了。



===測(cè)試2:增加數(shù)據(jù)庫文件,新增數(shù)據(jù)文件小于原有的數(shù)據(jù)文件===
最初表空間分布
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)


執(zhí)行
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)
執(zhí)行
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命令執(zhí)行后,表空間分布沒有自動(dòng)規(guī)整好??!


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)


再次執(zhí)行resize (all 20M)進(jìn)行表空間擴(kuò)容,表空間分布還是沒有自動(dòng)規(guī)整!


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)


再次執(zhí)行resize (all 30M)進(jìn)行表空間擴(kuò)容,表空間分布還是沒有自動(dòng)規(guī)整!
如果執(zhí)行完resize (all 20M)后,表空間使用率很高了,比如使用到了第三個(gè)Stripe,即276號(hào)extent以后的空間,再執(zhí)行resize (all 30M)后,276號(hào)開始的extent會(huì)觸發(fā)rebalance


結(jié)論:通過以上測(cè)試可以看到DB2在增加新的數(shù)據(jù)文件的時(shí)候,如果新增數(shù)據(jù)文件大于原來的數(shù)據(jù)文件,使用resize命令可以自動(dòng)規(guī)整表空間分布;如果新增數(shù)據(jù)文件小于原來的數(shù)據(jù)文件,使用resize命令無法自動(dòng)規(guī)整表空間分布,導(dǎo)致數(shù)據(jù)分布不整齊,可能在擴(kuò)容期間會(huì)引起表空間rebalance。建議DB2每次增加數(shù)據(jù)文件,與原來的數(shù)據(jù)文件大小一致,或者至少比原來的數(shù)據(jù)文件大。

還有一個(gè)疑問:如果出現(xiàn)了這種數(shù)據(jù)文件不對(duì)齊的現(xiàn)象,如何才能讓數(shù)據(jù)文件變?yōu)橐?guī)整?


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI