在 DB2 資料庫架構中,表空間是邏輯儲存層的核心組件,其管理模式直接決定了資料的物理分佈、I/O 效能與維運複雜度。DB2 提供了兩種截然不同的表空間管理機制:系統管理空間(SMS,System Managed Space)與資料庫管理空間(DMS,Database Managed Space)。理解兩者的運作原理與適用場景,是資料庫管理員(DBA)進行架構規劃與效能調校的基石。
SMS 表空間將儲存管理的責任完全委託給作業系統的檔案系統。建立 SMS 表空間時,僅需指定一個或多個目錄路徑作為容器,DB2 會在其中以檔案形式存放資料。每張資料表、索引、LOB 物件皆對應獨立的實體檔案,副檔名標識資料類型(如 .DAT 為資料、.INX 為索引、.LF 為長欄位)。
此模式的優勢在於管理極簡:無需預先分配空間,檔案隨資料增長自動擴展,DBA 無須監控剩餘容量、執行擴容操作。然而,代價是效能上限受限於檔案系統。邏輯連續的頁面在物理磁碟上是否連續,取決於檔案系統的分配演算法與當前碎片狀態;若檔案系統繁忙,連續頁面極易分散,導致表掃描時的預讀效率大幅下降。此外,資料經由檔案系統快取再進入 DB2 緩衝區,形成「雙重緩衝」,增加 CPU 開銷與記憶體壓力。
DMS 表空間由 DB2 直接管理磁碟空間。建立時必須顯式宣告容器(裝置或檔案)及其大小,空間即時預分配,而非按需向作業系統申請。DB2 繞過檔案系統,直接對裸裝置或預分配檔案進行區塊級管理,擁有對物理頁面佈局的決定權。
DMS 提供兩種容器選項,效能特徵迥異:
DMS 亦支援將表資料、索引、長欄位/LOB 分離至不同表空間,進一步優化 I/O 分佈。
| 維度 | SMS | DMS(檔案容器) | DMS(裸裝置) |
|---|---|---|---|
| 空間分配 | 動態、按需 | 建立時靜態預分配 | 建立時靜態預分配 |
| 物理連續性 | 依賴檔案系統,不可控 | 通常連續,不保證 | 保證連續 |
| 雙重緩衝 | 存在 | 存在 | 無 |
| 管理複雜度 | 極低 | 中等(需監控空間、手動擴容) | 較高(需規劃裝置、權限) |
| 擴容方式 | 自動 | ALTER TABLESPACE ADD/EXTEND/RESIZE | ALTER TABLESPACE ADD/EXTEND/RESIZE |
| 適用場景 | 開發/測試、中小型應用、低維運成本需求 | 生產環境、需平衡效能與管理便利性 | 核心高負載系統、資料倉庫、極致效能追求 |

總結而言,SMS 以「簡」取勝,適合輕量級場景;DMS 以「控」見長,透過犧牲管理便利性換取確定性的高效能。現代 DB2 版本(9.7 起)已引入自動儲存表空間,融合兩者優點:由 DB2 自動管理容器建立與擴展,兼具 DMS 效能優勢與 SMS 運維簡易性,成為新建資料庫的推薦預設選項。