表空間是資料庫與表之間的**邏輯儲存層**。資料庫建立於表空間之上,表建立於表空間之中。合理規劃表空間可將資料分散至不同磁碟/路徑,**平衡 I/O 負載、提升存取效能、便於管理維護**。
| 維度 | SMS (System Managed Space) | DMS (Database Managed Space) |
|---|---|---|
| 容器形式 | 作業系統**目錄** (路徑) | 預分配**檔案** 或 **裸裝置** (Raw Device) |
| 空間管理 | OS 檔案系統自動管理,動態擴增 | DB2 內部管理,固定大小,滿時需手動擴容/加容器 |
| 管理複雜度 | 低,簡單易用 | 高,需 DBA 規劃監控 |
| 效能表現 | 一般 (檔案系統額外開銷) | 優 (繞過檔案系統,直接 I/O,預分配減少碎片) |
| 適用場景 | 開發/測試、小型資料庫、臨時表空間 | 生產環境核心業務表空間首選 |
USERSPACE1SYSCATSPACE (不可刪除)TEMPSPACE1 (建議僅保留一個,頁面大小匹配主表空間)
CREATE TABLESPACE tbsp_sms_01
MANAGED BY SYSTEM
USING ('/db2data/tbsp_sms_01');
CREATE TABLESPACE tbsp_dms_01
MANAGED BY DATABASE
USING (FILE '/db2data/tbsp_dms_01_01' 50000,
FILE '/db2data/tbsp_dms_01_02' 50000)
PAGESIZE 4096
EXTENTSIZE 32
PREFETCHSIZE 128
BUFFERPOOL IBMCATALOG; -- 或自訂緩衝池
參數解析:
PAGESIZE:4K/8K/16K/32K,建表時指定,決定列長度上限與 I/O 粒度。EXTENTSIZE:Extent 大小 (頁數),條狀分布單位,建議 32/64。PREFETCHSIZE:預讀大小,通常為 EXTENTSIZE * 容器數 或其倍數。BUFFERPOOL:關聯緩衝池,頁面大小必須一致。
CREATE TABLESPACE tbsp_raw_01
MANAGED BY DATABASE
USING (DEVICE '/dev/rdb2_01' 100000,
DEVICE '/dev/rdb2_02' 100000);
-- 系統臨時
CREATE SYSTEM TEMPORARY TABLESPACE tempspace_sys
MANAGED BY DATABASE
USING (FILE '/db2temp/tempspace_sys' 20000)
PAGESIZE 4096;
-- 使用者臨時 (DGTT 專用)
CREATE USER TEMPORARY TABLESPACE tempspace_usr
MANAGED BY DATABASE
USING (FILE '/db2temp/tempspace_usr' 10000)
PAGESIZE 4096;
| 頁面大小 | 最大行長度 | 適用場景 |
|---|---|---|
| 4 KB (預設) | ~4005 bytes | OLTP、一般業務、窄表 |
| 8 KB | ~8101 bytes | 中寬表、較多 VARCHAR |
| 16 KB | ~16293 bytes | 寬表、DSS/OLAP、大量 LOB 參考 |
| 32 KB | ~32677 bytes | 極寬表、大型 LOB/XML 存儲 |
**原則**:盡量用最小滿足需求的頁面,減少記憶體浪費;大表、LOB 多考慮 16K/32K 並分離至 Large 表空間。
TBSP_<類型>_<用途>_<序號> (如 TBSP_DMS_DATA_CORE_01)。DB2_ALERT 或腳本監控 USED_PAGES / TOTAL_PAGES > 80% 告警。