表空間是 DB2 資料庫邏輯儲存層的核心概念,位於資料庫與表之間。合理規劃表空間能將資料分散至不同磁碟/路徑,大幅提升 I/O 平行度與存取效能。本文從管理模式、功能類型、容器特性三個維度完整解析。
一、按管理模式分類(核心區分)
SMS — System Managed Space(系統管理表空間)
- 容器:作業系統檔案系統中的目錄
- 空間管理:由 OS 自動管理,檔案隨資料增長自動擴展
- 優點:管理簡單、無需預估大小、空間利用彈性高
- 缺點:效能較 DMS 稍低(檔案系統額外開銷)、不支援原始裝置
- 預設系統表空間:
SYSCATSPACE (系統目錄)
DMS — Database Managed Space(資料庫管理表空間)
- 容器:預分配的固定大小檔案 或 原始裝置 (raw device)
- 空間管理:由 DB2 管理,建立時指定大小,不足時需手動
ALTER TABLESPACE EXTEND 或 ADD CONTAINER
- 優點:效能較高(繞過檔案系統)、支援原始裝置、可精確控制配置
- 缺點:管理較複雜、需容量規劃、擴充需人工介入
- 預設使用者表空間:
USERSPACE1
二、按功能類型分類
1. 規則表空間
- 儲存使用者資料表、索引、系統目錄表
- 預設:
SYSCATSPACE (系統)、USERSPACE1 (使用者)
- 可建立多個規則表空間分離熱/冷資料、不同業務模組
2. 大物件表空間
- 專門儲存 LOB 資料 (BLOB/CLOB/DBCLOB)、XML 文件、長欄位資料
- 可與基表資料分離至不同磁碟,避免大物件掃描影響主表效能
3. 系統暫存表空間
- 儲存查詢處理過程中的內部暫存資料:排序、雜湊聯結、重組表、建立索引等
- 預設:
TEMPSPACE1
- 建議:僅建立一個,頁面大小與多數表一致即可
4. 使用者暫存表空間
- 儲存已宣告全域暫存表 (DGTT) 的資料
- 資料庫建立時不預設建立,需手動建立
- 使用 DGTT 的應用必須有可用的使用者暫存表空間
三、容器特性對照
| 特性 | SMS | DMS (檔案) | DMS (原始裝置) |
| 容器形式 | 目錄 | 預分配檔案 | 原始磁碟分割/邏輯卷 |
| 空間增長 | 自動 (OS) | 手動 EXTEND/ADD | 手動 ADD (需預留分割) |
| 效能 | 良好 | 優 | 最佳 (無檔案系統開銷) |
| 管理複雜度 | 低 | 中 | 高 |
| 備份/還原 | 檔案級 | 頁面級/檔案級 | 需特殊工具 |
| 適用場景 | 開發/測試/中小型 | 生產環境標準 | 高效能/大型關鍵系統 |
四、頁面大小選擇
- 4K:預設,適用多數 OLTP
- 8K/16K/32K:大行寬度表、LOB 重、資料倉庫掃描密集場景
- 同一資料庫可混用不同頁面大小表空間,但緩衝池需對應頁面大小
五、規劃建議
- 分離關注點:系統表、使用者資料、索引、暫存、LOB 各用獨立表空間
- 磁碟分離:不同表空間容器置於不同物理磁碟/RAID 組
- 選型原則:生產環境優先 DMS;開發/測試/簡單部署用 SMS
- 監控指標:定期檢視
db2pd -tablespaces 或 MON_GET_TABLESPACE 監控使用率、高水位線
- 自動儲存:DB2 10.5+ 支援
AUTOMATIC STORAGE YES 簡化 SMS/DMS 管理