表空間是 資料庫 ↔ 表 間的邏輯層,支援將數據合理分佈於不同磁碟/路徑,提升 I/O 並行度與管理彈性。
| 特性 | SMS (系統管理) | DMS (資料庫管理) |
|---|---|---|
| 容器本質 | OS 目錄 | 預分配文件 / 原始裝置 |
| 空間增長 | 自動、按需 | 手動 ALTER ADD/RESIZE/EXTEND |
| 管理複雜度 | 低 | 中 |
| 索引/LOB 分離存放 | 不支援 | 支援 (INDEX IN / LONG IN) |
| 表跨表空間分佈 | 不支援 | 支援 |
| 按需分配 | 是 | 否 (預分配) |
| 多磁碟條帶化 | 是 (多目錄) | 否 (單文件/裝置) |
| 區段大小可變 | 否 | 否 |
| 典型效能 | 基準 | 優 ~20% (大量載入/查詢) |
建議:生產核心表優先 DMS;開發/測試/小表可用 SMS。
| 類型 | 用途 | 預設名 | 備註 |
|---|---|---|---|
| 規則表空間 | 用戶表、索引、系統目錄 | USERSPACE1 / SYSCATSPACE | 核心業務數據 |
| 大對象表空間 | LOB/LONG/XML 數據 | — | 可獨立於基表空間 |
| 系統臨時表空間 | 排序、重組、建索引、連接中間結果 | TEMPSPACE1 | 至少一個,建議單頁面大小一個 |
| 用戶臨時表空間 | 已宣告全域暫存表 (DGTT) | — | 非預設建立,應用臨時數據隔離 |
# 建立 (Win 多磁碟條帶)
CREATE TABLESPACE RESOURCE MANAGED BY SYSTEM USING ('D:\acc_tbsp','E:\acc_tbsp','F:\acc_tbsp')
# 產生三目錄,各含 SQLTAG.NAM
# 刪除
DROP TABLESPACE RESOURCE
# 目錄殘留需手工刪除
# 建立 (兩文件容器,各 5000 頁 = 20MB @ 4KB)
CREATE TABLESPACE RESOURCE MANAGED BY DATABASE
USING (FILE 'D:\db2data\acc_tbsp' 5000, FILE 'E:\db2data\acc_tbsp' 5000)
# 新增容器
ALTER TABLESPACE RESOURCE ADD (FILE 'F:\db2data\acc_tbsp' 5000)
# 縮容 (設定絕對大小 8000 頁) — 數據未滿才能縮
ALTER TABLESPACE RESOURCE RESIZE (FILE 'D:\db2data\acc_tbsp' 8000, FILE 'E:\db2data\acc_tbsp' 8000, FILE 'F:\db2data\acc_tbsp' 8000)
# 擴容 (在現有基礎上 +1000 頁)
ALTER TABLESPACE RESOURCE EXTEND (FILE 'D:\db2data\acc_tbsp' 1000, FILE 'E:\db2data\acc_tbsp' 1000, FILE 'F:\db2data\acc_tbsp' 1000)
# 刪除 (連帶刪除物理文件)
DROP TABLESPACE RESOURCE
# Unix 原始裝置範例
CREATE TABLESPACE RESOURCE MANAGED BY DATABASE
USING (DEVICE '/dev/rdblv6' 10000, DEVICE '/dev/rdblv7' 10000, DEVICE '/dev/rdblv8' 10000)
# 需實例擁有者可寫入裝置
# 系統臨時 (SMS)
CREATE SYSTEM TEMPORARY TABLESPACE tmp_tbsp MANAGED BY SYSTEM USING ('D:\tmp_tbsp','E:\tmp_tbsp')
# 用戶臨時 (DMS)
CREATE USER TEMPORARY TABLESPACE usr_tbsp MANAGED BY DATABASE
USING (FILE 'D:\db2data\user_tbsp' 5000, FILE 'E:\db2data\user_tbsp' 5000)
# 重命名 (自動更新所有目錄引用)
RENAME TABLESPACE RESOURCE TO RES1
# 建表指定表空間
CREATE TABLE T1 (ABC INT) IN RES1
# 索引/LOB 可另指定:INDEX IN IDX_TS LONG IN LOB_TS
db2empfa 啟用 SMS 區段預分配 (建議 32 頁/區段)CREATE TABLE ... INDEX IN IDX_TS LONG IN LOB_TSdb2dart /TS 檢查表空間一致性db2 get snapshot for tablespaces 關注 Usable pages、High water mark/dev/rdsk/...),區塊裝置效能差掌握表空間類型選擇、容器全生命週期管理、I/O 條帶化佈局,是 DB2 存儲層效能與可用性的基石。