首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

DB2 表空間建立全攻略:SMS vs DMS、類型選擇與實戰語法

     編輯:DB2 教學

表空間核心概念

表空間是資料庫與表之間的**邏輯儲存層**。資料庫建立於表空間之上,表建立於表空間之中。合理規劃表空間可將資料分散至不同磁碟/路徑,**平衡 I/O 負載、提升存取效能、便於管理維護**。

兩大管理模式:SMS vs DMS

維度SMS (System Managed Space)DMS (Database Managed Space)
容器形式作業系統**目錄** (路徑)預分配**檔案** 或 **裸裝置** (Raw Device)
空間管理OS 檔案系統自動管理,動態擴增DB2 內部管理,固定大小,滿時需手動擴容/加容器
管理複雜度低,簡單易用高,需 DBA 規劃監控
效能表現一般 (檔案系統額外開銷)優 (繞過檔案系統,直接 I/O,預分配減少碎片)
適用場景開發/測試、小型資料庫、臨時表空間生產環境核心業務表空間首選

五大表空間類型與預設命名

  1. Regular (規則表空間):儲存使用者資料表、索引、系統目錄表。
    • 預設使用者表空間:USERSPACE1
    • 預設系統目錄表空間:SYSCATSPACE (不可刪除)
  2. Large (大物件表空間):專儲 LOB、LONG、XML 等大物件資料。(DB2 v9+ 預設即為 Large 類型,v8 需顯式指定)
  3. System Temporary (系統臨時表空間):排序、重組、建索引、連接等內部操作產生的暫存資料。
    • 預設:TEMPSPACE1 (建議僅保留一個,頁面大小匹配主表空間)
  4. User Temporary (使用者臨時表空間):儲存已宣告全域暫存表 (DGTT) 的資料。資料庫建立時**不預設建立**,需手動建立。

建立表空間實戰語法

1. SMS 表空間 (最簡單)


CREATE TABLESPACE tbsp_sms_01
MANAGED BY SYSTEM
USING ('/db2data/tbsp_sms_01');

2. DMS 表空間 (檔案容器) — 生產標準


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:關聯緩衝池,頁面大小必須一致。

3. DMS 表空間 (裸裝置容器) — 極致效能


CREATE TABLESPACE tbsp_raw_01
MANAGED BY DATABASE
USING (DEVICE '/dev/rdb2_01' 100000,
       DEVICE '/dev/rdb2_02' 100000);

4. 臨時表空間建立


-- 系統臨時
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 bytesOLTP、一般業務、窄表
8 KB~8101 bytes中寬表、較多 VARCHAR
16 KB~16293 bytes寬表、DSS/OLAP、大量 LOB 參考
32 KB~32677 bytes極寬表、大型 LOB/XML 存儲

**原則**:盡量用最小滿足需求的頁面,減少記憶體浪費;大表、LOB 多考慮 16K/32K 並分離至 Large 表空間。

最佳實務建議

  1. 生產核心表空間全用 DMS,容器多條條狀分布於不同物理磁碟/LUN。
  2. 分離關注點:索引、資料、LOB、臨時、日誌 各自獨立表空間/磁碟。
  3. 命名規範:TBSP_<類型>_<用途>_<序號> (如 TBSP_DMS_DATA_CORE_01)。
  4. 監控閾值:設定 DB2_ALERT 或腳本監控 USED_PAGES / TOTAL_PAGES > 80% 告警。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved