首頁
編程語言
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)
容器形式OS 目錄預分配文件 / 原始設備
空間分配按需自動擴展創建時固定,滿後手工擴容
管理複雜度低 (OS 自動)高 (DBA 手工)
性能一般優 (繞過文件系統緩存、可用原始設備)
動態加容器不支持支持 (ALTER TABLESPACE ... ADD)
索引/LOB 獨立放置不支持支持 (INDEX IN ... LONG IN ...)
表跨表空間不支持支持
刪除後磁盤清理目錄殘留需手工刪文件/設備自動釋放

結論:生產核心業務首選 DMS;測試/輕量場景 SMS 省運維。

四大功能類型

  1. Regular (常規):用戶數據、索引、系統目錄 (默認 SYSCATSPACE、USERSPACE1)。
  2. Large Object (大對象):BLOB/CLOB/DBCLOB 專用,可與常規分離。
  3. System Temporary (系統臨時):排序、重組、建索引、Join 等內部臨時數據,建議按主頁面大小創建一個 (默認 TEMPSPACE1)。
  4. User Temporary (用戶臨時):DECLARE GLOBAL TEMPORARY TABLE 存儲,非默認創建,需額外建立。

容器操作實戰語法

SMS 創建/刪除

CREATE TABLESPACE RESOURCE MANAGED BY SYSTEM USING ('d:\acc_tbsp','e:\acc_tbsp','f:\acc_tbsp');
DROP TABLESPACE RESOURCE;  -- 目錄殘留需手工清理

DMS 文件容器全生命週期

-- 創建:兩個 5000 頁文件容器 (4K 頁 = 20MB/容器)
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);

-- 縮/擴容器 (RESIZE 絕對值 / EXTEND 相對增量)
ALTER TABLESPACE RESOURCE RESIZE (FILE 'd:\db2data\acc_tbsp' 8000, ...);
ALTER TABLESPACE RESOURCE EXTEND (FILE 'd:\db2data\acc_tbsp' 1000, ...);
-- 注意:數據已滿時 RESIZE 縮小會報錯

-- 刪除:自動清理文件
DROP TABLESPACE RESOURCE;

DMS 原始設備容器 (AIX/Unix)

CREATE TABLESPACE RESOURCE MANAGED BY DATABASE
  USING (DEVICE '/dev/rdblv6' 10000, DEVICE '/dev/rdblv7' 10000, DEVICE '/dev/rdblv8' 10000);
-- 前提:邏輯卷已存在,實例擁有者與 SYSADM 組有寫權限

臨時表空間創建範例

-- 系統臨時 (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 (A INT) IN RESOURCE; -- 顯式指定表空間

選型決策樹

  1. 是否需索引/LOB 分離、表跨表空間、動態加容器?→ DMS
  2. 是否為臨時數據且無上述需求?→ SMS 系統臨時 / DMS 用戶臨時
  3. 純讀密集、易管理優先?→ SMS 常規
  4. 寫密集、大對象、高性能要求?→ DMS 常規 + 原始設備
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved