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

DB2 表空間全攻略:從 SMS/DMS 選型到緩衝池/容器規劃的實戰指南

     編輯:DB2 教學

表空間基礎:三大系統預設表空間

建立資料庫時 DB2 自動建立:

表空間類型用途可刪除/重建
SYSCATSPACEDMS系統目錄表/視圖(元資料)否
TEMPSPACE1SMS查詢排序、臨時表等中間結果否
USERSPACE1DMS使用者表、索引、LOB 等預設儲存是

SMS vs DMS:架構差異與選型決策樹

維度SMS (System Managed Space)DMS (Database Managed Space)
空間管理者作業系統檔案系統DB2 資料庫管理器
配置方式按需動態擴展建立時預先配置容器大小
初始設定複雜度低高
管理考量因素少多(容器大小、擴展、條帶化等)
效能上限受限於檔案系統經調優可超越 SMS,控制資料佈局
適用場景開發/測試、小型資料庫、臨時表空間生產核心業務、大型資料倉庫、高並發 OLTP

經驗法則:生產環境核心表空間**優先選 DMS**;TEMP 表空間可用 SMS 簡化管理。

緩衝池:效能加速器的核心參數

  • 預設 IBMDEFAULTBP:4KB 頁面、250 頁(約 1MB),通常嚴重不足
  • 支援頁面大小:2K/4K/8K/16K/32K —— **表空間頁面大小必須有對應緩衝池**
  • 核心機制:
    • 預讀:依查詢模式預先將頁面讀入緩衝池,減少同步 I/O 等待
    • 頁面清理器:非同步將髒頁刷回磁碟,保證緩衝池有足夠乾淨頁框供讀取
  • 多表空間可共享同一緩衝池;建立/更改表空間時指定 BUFFERPOOL 子句

實戰:Control Center 建立 DMS 表空間 TBSP_DATA1

  1. Create New Tablespace → 名稱 TBSP_DATA1、註解、Regular 類型
  2. 選擇緩衝池(可新建,如 16KB 頁面專用 BP)
  3. 選擇 Database-managed space (high performance)
  4. 容器頁面:Add → 類型 File、路徑 C:\DB2\NODE0000\TESTDB\TBSP_DATA1_C01、大小 5120 頁(20MB)
  5. 再加一容器 TBSP_DATA1_C02 實現條帶化(圖 11-12)
  6. Extent Size / Prefetch Size:依表平均大小自動建議(圖 12)
  7. Show SQL 存檔 crt_tbsp.clp → Finish

命令列建立大表空間 TBSP_INDEX1(附完整 SQL)

CONNECT TO HELLOWLD;

CREATE LARGE TABLESPACE TBSP_INDEX1 PAGESIZE 4 K
  MANAGED BY DATABASE
  USING (
    FILE 'C:\DB2\NODE0000\HELLOWLD\TBSP_INDEX1_C01' 5120,
    FILE 'C:\DB2\NODE0000\HELLOWLD\TBSP_INDEX1_C02' 5120
  )
  EXTENTSIZE 8
  OVERHEAD 10.5
  PREFETCHSIZE 16
  TRANSFERRATE 0.14
  BUFFERPOOL IBMDEFAULTBP;

COMMENT ON TABLESPACE TBSP_INDEX1 IS 'tablespace to hold index data';

CONNECT RESET;

執行:db2 -tvf crt_tbsp.clp(-tvf:終端機回顯、驗證語法、從檔案執行)

進階最佳實踐

主題建議
索引/LOB/XML 分離建立專用表空間 TBSP_INDEX、TBSP_LOB、TBSP_XML,CREATE TABLE ... INDEX IN TBSP_INDEX LONG IN TBSP_LOB
容器條帶化每表空間 2~4 個容器分散於不同物理磁碟/LUN,Extent Size 8~32 頁
自動儲存DB2 9.7+ 支援 MANAGED BY AUTOMATIC STORAGE,簡化容器管理
頁面大小選擇OLTP 多用 4K/8K;資料倉庫大掃描考慮 16K/32K 減少 I/O 次數
監控指標SNAPSHOT_TABLESPACE:POOL_DATA_P_READS、POOL_ASYNC_DATA_READS、PREFETCH_WAIT_TIME

系統目錄表空間 SYSCATSPACE 內部結構

Control Center → Show Related Objects 可列出 SYSIBM schema 下所有目錄表/索引。常用查詢:

-- 查看表空間容器
SELECT * FROM SYSCAT.TABLESPACES WHERE TBSPACE='SYSCATSPACE';
SELECT * FROM SYSCAT.CONTAINERS WHERE TBSPACEID=0;

總結

表空間是 DB2 儲存層的邏輯骨架。**SMS 簡單、DMS 強大**;緩衝池與頁面大小決定 I/O 效率上限;容器條帶化與索引/LOB 分離是生產環境標準動作。善用 Control Center 視覺化配置產生 SQL 腳本,再以命令列批次部署,實現「所見即所得」的儲存架構交付。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved