程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> DB2分區數據庫數據分布傾斜現象與重新分布(2)

DB2分區數據庫數據分布傾斜現象與重新分布(2)

編輯:DB2教程

這個文件包含4096個值(類似如下命令產生的分布文件 dist.out 文件),用於標記每個hash分區的權重.這些值的總和要大於0不大於4,294,967,295。

如:

  1. 1024  
  2. 0  
  3. 412  
  4. ...  
  5. 612  
  6. ...  
  7. ...  
  8. 2048 

這個文件可以按上面格式手工生成,但是通常情況下是利用load對分區導入的analyze模式來生成的。

首先用 db2gpmap -d <db name> -g <partition group> 生成作為分區映射的 mygroup.out 文件,然後執行:

  1. db2 "load from load.del of del messages msg.txt replace into load_dpf partitioned db config mode 

    analyze map_file_input mygroup.out map_file_output analyze.out distfile dist.out" 

此方法可以認為干預現有數據的分布,但是無法改變後續數DB2分區數據庫據分布策略.所以如果可能還是調整分區鍵重新選擇合適的分區鍵.

例2:

  1. [db2inst1@rhel5 tmp]$ db2 "redistribute database partition group ibmdefaultgroup using distfile dist.out"  
  2. [db2inst1@rhel4 tmp]$ db2 "select dbpartitionnum(i),count(*) from load_dpf group by dbpartitionnum(i) order by dbpartitionnum(i)"  
  3. [db2inst1@rhel4 tmp]$ db2 "insert into load_dpf values(1234)"  
  4. DB20000I The SQL command completed successfully.  
  5. [db2inst1@rhel4 tmp]$ db2 "insert into load_dpf values(1234324)"  
  6. DB20000I The SQL command completed successfully.  
  7. [db2inst1@rhel4 tmp]$ db2 "insert into load_dpf values(123123)"  
  8. DB20000I The SQL command completed successfully.  
  9. [db2inst1@rhel4 tmp]$ db2 "select dbpartitionnum(i),count(*) from load_dpf group by dbpartitionnum(i) order by dbpartitionnum(i)"  

從上面結果可以看出新插入的數據並沒有根據dist.out的權重策略去分配,數據依然是根據分區鍵的哈希(hash)值對應的分區映射來分布的.

3. USING TARGETMAP : 用目標分區映射來進行重分布主要適用於類型B,通過人工調整可以把某個分區的數據分布到其他分區上。

例3:

如果手工把分區映射中0號節點替換成2號節點,分區映射文件 mygroup.out 內容類似:

  1. 2 1 2 3 2 1 2 3 2 1 2 3 2 1 2 3 2 1 2 3 2 1 2 3 2 1 2 3 2 1 ... 

則運行:

  1. db2 "redistribute database partition group ibmdefaultgroup using targetmap mygroup.out" 

的結果是:

如果用如上的load的分析功能對mygroup.out分區映射產生的新分區映射analyze.out進行重分布的結果是:

從上面結果可以看出load加analyze選項的分析結果比原始文件更加優化,所以建議使用load分析功能對分區映射進行進一步的優化後再進行重分布.

NOTE:

在做完 REDISTRIBUTE DATABASE PARTITION GROUP 操作後,需要運行 RUNSTATS 來更新統計信息.由於REDISTRIBUTE對表的數據操作是作為一個完整的事務,所以如果表的數據量很大,則需要提前調高活動日志大小或數目.

REDISTRIBUTE DATABASE PARTITION GROUP 在db2v9.5中得到了增強,原來添加和刪除節點是和redistribute 操作分開的,在db2v9.5中被整合成redistribute的一部分"Add/Drop DB partition",減少了操作步驟,大大方便了用戶的操作.以上的相關內容就是對DB2分區數據庫中的相關數據分布傾斜現象與重新分布的實際操作方法的介紹,望你能有所收獲。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved