DB2 Database Partitioning Feature (DPF) 適用於大規模並行處理(MPP)架構,將資料依雜湊分散至多個邏輯/物理分區,實現線性擴展。本文記錄在 Windows/Linux 環境下,以命令列方式建立分區的標準流程。
db2admin 或同等權限帳號db2icrt -s ESE -u db2admin,Password123 -h HOSTNAME INSTNAME
-s ESE:指定 ESE 伺服器類型(支援 DPF)-u:Fenced user 帳號/密碼-h:主機名稱完成後必須重啟 DB2 服務(db2stop; db2start)。
CATALOG LOCAL NODE INSTNAME INSTANCE INSTNAME SYSTEM HOSTNAME OSTYPE NT;
set DB2INSTANCE=INSTNAME
db2 get instance
db2 attach to INSTNAME
db2start dbpartitionnum 0 ADD DBPARTITIONNUM
HOSTNAME HOSTNAME PORT 1
COMPUTER HOSTNAME USER db2admin PASSWORD Password123
WITHOUT TABLESPACES
dbpartitionnum 0:從分區 0(協調節點)發起WITHOUT TABLESPACES:新分區不自動建立表空間,稍後手動控制db2stop; db2start
DB2 會自動執行資料重新分配,將現有資料依雜湊分散至新分區。
分區群組定義表空間可使用的分區集合:
CREATE DATABASE PARTITION GROUP "NODE1" ON DBPARTITIONNUMS (1);
COMMENT ON DATABASE PARTITION GROUP "NODE1" IS 'HOSTNAME_1';
CREATE REGULAR TABLESPACE TS_DATA
IN DATABASE PARTITION GROUP NODE1
MANAGED BY AUTOMATIC STORAGE;
db2 "SELECT * FROM SYSCAT.DBPARTITIONGROUPS"
db2 "SELECT * FROM SYSCAT.DBPARTITIONGROUPDEF"
db2 "SELECT DBPARTITIONNUM, IN_USE FROM TABLE(DB_PARTITIONS()) AS T"
| 問題 | 原因 | 解決 |
|---|---|---|
| 新分區無法啟動 | 連接埠衝突、防火牆、主機名解析 | 檢查 services 檔、/etc/hosts、防火牆規則 |
| 資料傾斜嚴重 | 分區鍵基數低、分布不均 | 重新選擇高基數欄位為分區鍵,或用 REDISTRIBUTE |
| 表空間建立失敗 | 容器路徑在新分區不存在 | 使用自動儲存或預先建立同樣路徑 |
「建實例 → 登錄節點 → 切實例 → 加分區 → 重啟 → 建分區群組 → 建表空間」是 DPF 部署的標準節奏。掌握此流程,即可將單機 DB2 平滑擴展為 MPP 叢集,支撐 TB/PB 級資料倉庫負載。