DB2 Database Partitioning Feature (DPF) 通過「共享無」架構,將數據按分區鍵哈希分佈到多個邏輯分區,實現 CPU/內存/IO 線性擴展。本文以 Windows 環境為例,演示從實例創建到分區組落地的標準化流程。
# 創建實例(-s ESE 指定產品類型,-u 指定服務賬戶,-h 主機名)
db2icrt -s ESE -u db2admin,aaa123456 -h ANWENHAO DBINSTANCENAME
# 重啟生效
db2stop && db2start
# 目錄化本地節點(SYSTEM 為遠程主機名,OSTYPE 目標 OS)
CATALOG LOCAL NODE DB2INST1 INSTANCE DB2INST1 SYSTEM ANWENHAO OSTYPE NT;
set db2instance=db2inst1
db2 get instance # 驗證當前實例
db2 attach to db2inst1 # 附著實例以執行分區管理命令
db2start dbpartitionnum 1 ADD DBPARTITIONNUM \
HOSTNAME ANWENHAO PORT 1 \
COMPUTER ANWENHAO USER db2admin PASSWORD aaa123456 \
WITHOUT TABLESPACES
關鍵參數解讀:
dbpartitionnum 1:從分區 1 開始添加(分區 0 為目錄分區,不可添加)PORT 1:FCM 通訊基礎端口,實際端口 = 基礎 + 分區號WITHOUT TABLESPACES:新分區不自動創建表空間,後續手動控制db2stop force && db2start
此時 DB2 內部自動執行:
CREATE DATABASE PARTITION GROUP "NODE1" ON DBPARTITIONNUMS (1);
COMMENT ON DATABASE PARTITION GROUP "NODE1" IS 'ANWENHAO_1';
分區組是表空間的邏輯容器,支持:
ON DBPARTITIONNUMS (1)ON DBPARTITIONNUMS (1 TO 4) 或 (1,3,5)ON ALL DBPARTITIONNUMSCREATE REGULAR TABLESPACE USERSPACE1 \
IN DATABASE PARTITION GROUP NODE1 \
PAGESIZE 8K MANAGED BY DATABASE \
USING (FILE 'C:\DB2\NODE1\USERSPACE1' 10000) \
BUFFERPOOL BP_8K;
最佳實踐:
| 目的 | 命令 |
|---|---|
| 查看分區拓撲 | db2 "SELECT * FROM SYSCAT.DBPARTITIONGROUPS" |
| 查看分區組成員 | db2 "SELECT * FROM SYSCAT.PARTITIONMAPS WHERE PMAP_ID = (SELECT PMAP_ID FROM SYSCAT.DBPARTITIONGROUPS WHERE PARTITIONGROUP_NAME = 'NODE1')" |
| 查看表分區分佈 | db2 "SELECT DBPARTITIONNUM(HASHEDVALUE(col)), COUNT(*) FROM schema.table GROUP BY DBPARTITIONNUM(HASHEDVALUE(col))" |
| 手動重分佈 | REDISTRIBUTE DATABASE PARTITION GROUP NODE1 UNIFORM |
ON DBPARTITIONNUM,恢復需同步所有分區至同一時間點DB2 DPF 分區部署「重規劃、輕操作」,關鍵在於分區鍵設計、分區組劃分與表空間映射。建立標準化部署腳本、納入 CI/CD 流程,可將擴容操作從「高風險手工」轉化為「常規自動化變更」。