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

DB2 表空間深度解析:SMS vs DMS、四大類型與管理實務

     編輯:DB2 教學

表空間是 DB2 儲存資料的邏輯容器,理解其管理模式(SMS/DMS)、四大類型與操作指令,是效能調校與容量規劃的基石。

一、兩大管理模式

特性SMS (System Managed Space)DMS (Database Managed Space)
容器形式作業系統目錄預分配檔案或裸裝置
空間管理OS 自動擴增/縮減DBA 手動管理,滿時需擴容
效能較低(檔案系統額外開銷)較高(繞過檔案系統)
適用場景開發、測試、小型資料庫生產、大型、高效能需求

二、四大表空間類型

  1. Regular(規則):存放使用者資料表、索引、系統目錄表。預設 USERSPACE1、SYSCATSPACE。
  2. Large(長整數):專存 LOB/LONG 資料,**僅支援 DMS**。
  3. System Temporary(系統臨時):排序、重組、建索引、Join 等內部臨時資料。建議依主流頁面大小建一個即可,預設 TEMPSPACE1。
  4. User Temporary(使用者臨時):儲存 DECLARE GLOBAL TEMPORARY TABLE 的資料。非預設建立,節點群組預設 IBMDEFAULTGROUP。

三、建立指令範例

SMS 表空間

-- Windows/OS/2 多目錄分散 I/O
CREATE TABLESPACE RESOURCE MANAGED BY SYSTEM
  USING ('D:\ACC_TBSP','E:\ACC_TBSP','F:\ACC_TBSP');

-- UNIX 單目錄
CREATE TABLESPACE SMS8K PAGESIZE 8192 MANAGED BY SYSTEM
  USING ('FSMS_8K_1') BUFFERPOOL BUFFPOOL8K;

DMS 表空間(檔案容器)

-- Windows/OS/2
CREATE TABLESPACE RESOURCE MANAGED BY DATABASE
  USING (FILE 'D:\DB2DATA\ACC_TBSP' 5000,
         FILE 'E:\DB2DATA\ACC_TBSP' 5000);

-- UNIX 裸裝置
CREATE TABLESPACE RESOURCE MANAGED BY DATABASE
  USING (DEVICE '/dev/rdblv6' 10000,
         DEVICE '/dev/rdblv7' 10000,
         DEVICE '/dev/rdblv8' 10000)
  OVERHEAD 24.1 TRANSFERRATE 0.9;

分區資料庫指定節點容器

CREATE TABLESPACE PLANS MANAGED BY DATABASE
  USING (DEVICE '/dev/hdisk0' 10000, DEVICE '/dev/n1hd01' 40000) ON NODE 1
  USING (DEVICE '/dev/hdisk0' 10000, DEVICE '/dev/n3hd03' 40000) ON NODE 3
  USING (DEVICE '/dev/hdisk0' 10000, DEVICE '/dev/n5hd05' 40000) ON NODE 5;

臨時表空間

-- 系統臨時
CREATE SYSTEM TEMPORARY TABLESPACE TMP_TBSP MANAGED BY SYSTEM
  USING ('D:\TMP_TBSP','E:\TMP_TBSP');

-- 使用者臨時
CREATE USER TEMPORARY TABLESPACE USR_TBSP MANAGED BY DATABASE
  USING (FILE 'D:\DB2DATA\USER_TBSP' 5000,
         FILE 'E:\DB2DATA\USER_TBSP' 5000);

四、容器維護操作

-- 新增容器
ALTER TABLESPACE RESOURCE ADD (DEVICE '/dev/rhd9' 10000, DEVICE '/dev/rhd10' 10000);

-- 縮/擴容(僅 DMS)
ALTER TABLESPACE HISTORY RESIZE (DEVICE '/dev/rhd7' 2000, DEVICE '/dev/rhd8' 2000);
ALTER TABLESPACE HISTORY EXTEND (DEVICE '/dev/rhd11' 1000, DEVICE '/dev/rhd12' 1000);

注意:容器不可縮小,EXTEND 為在原大小基礎上增加。

五、重命名與刪除

  • RENAME TABLESPACE OLD_NAME TO NEW_NAME:不可重命名 SYSCATSPACE、前滾暫掛或前滾中表空間。
  • DROP TABLESPACE:連同資料、容器、目錄項一併刪除,物件標記無效。需 COMMIT 後才能重用容器。

六、選型建議

  • 生產環境優先 DMS + 裸裝置,發揮最高 I/O 效能。
  • Large 表空間獨立規劃,隔離 LOB 對 Regular 表空間的衝擊。
  • 系統臨時表空間頁面大小對齊多數使用者表空間,減少緩衝池切換。
  • 定期監控 SNAPSHOT TABLESPACE 使用率,預留 20% 以上閒置空間。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved