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

DB2 9.7 自動維護新特性:MDC 表空間自動回收實戰指南

     編輯:DB2 教學

MDC 與空間回收背景

多維聚集(MDC)表將多維相似值行物理聚集在同一塊(Block,等於表空間擴展大小),提升分析查詢 I/O 效率。塊映射跟蹤所有擴展使用狀態,刪除/轉出數據後塊標記為可復用,但不歸還表空間。DB2 9.7 引入 REORG TABLE RECLAIM EXTENTS ONLY 選項,支持聯機釋放 MDC 專用擴展供其他對象使用,可控制並發訪問權限(默認 ALLOW WRITE ACCESS)。僅支持 DMS 表空間。

自動維護框架

V9 引入自動維護(備份、統計、重組)。V9.7 擴展支持 MDC 擴展回收。需啟用三參數:AUTO_MAINT、AUTO_TBL_MAINT、AUTO_REORG = ON。維護策略由系統存儲過程 AUTOMAINT_SET_POLICY/FILE 以 XML 形式設置。

實戰演示環境

Linux x64 DB2 9.7,創建數據庫 MYDB 及 DMS 表空間 tbs1 (自動擴容)。創建 MDC 表:

CREATE TABLE mdctab (c1 INT, c2 INT) ORGANIZE BY DIMENSIONS (c1) IN tbs1;

插入 4 條不同 c1 值數據,佔用 4 個擴展。刪除所有數據後表空間空閒頁不變(擴展未釋放)。

手動回收驗證

db2 "reorg table mdctab RECLAIM EXTENTS ONLY allow write access"
-- 空閒頁從 2112 增至 2208,釋放 3 個擴展(1 個保留)

不帶 RECLAIM EXTENTS ONLY 的 REORG 需離線執行;帶該選項支持 ALLOW WRITE ACCESS。

自動回收配置步驟

1. 設置自動 REORG 策略

調用 AUTOMAINT_SET_POLICY,類型 AUTO_REORG,XML 配置指定 reclaimExtentsSizeForMDCTables 閾值(KB):

CALL SYSPROC.AUTOMAINT_SET_POLICY
('AUTO_REORG', BLOB(
'

  
  
    
  
'));

示例設置 1KB 閾值便於演示,生產環境按實際調整。

2. 設置維護窗口

調用 AUTOMAINT_SET_POLICY,類型 MAINTENANCE_WINDOW,定義在線/離線窗口(起始時間、持續、星期、月份):

CALL SYSPROC.AUTOMAINT_SET_POLICY
('MAINTENANCE_WINDOW', BLOB(
'

  
    Mon Tue Wed Thu Fri
    All
    All
  
  
    All
    All
    All
  
'));

3. 驗證策略配置

使用 AUTOMAINT_GET_POLICYFILE 導出 XML 文件檢查(存放於 SQLLIB/tmp)。或用 AUTOMAINT_GET_POLICY(需嵌入式 C 調用)。

4. 了解刷新間隔

自動維護每 7200 秒(2 小時)檢查策略:

SELECT REFRESH_INTERVAL FROM TABLE(HEALTH_GET_IND_DEFINITION('')) AS T
WHERE NAME = 'db.tb_reorg_req'; -- 返回 7200

5. 啟用自動維護

db2 update db cfg using AUTO_REORG on
-- 驗證:AUTO_MAINT=ON, AUTO_TBL_MAINT=ON, AUTO_REORG=ON

效果驗證

等待下一刷新周期進入維護窗口,自動執行 REORG RECLAIM。通過 LIST HISTORY REORG ALL FOR MYDB 查看歷史:

Op Obj Timestamp+Sequence Type Dev Earliest Log Current Log Backup ID
G T 20100101064038 N S0000000.LOG S0000002.LOG
Table: "HAOQINGY"."MDCTAB"
Comment: REORG RECLAIM
Start Time: 20100101064038 End Time: 20100101064039 Status: A EID: 3
G T 20100101075636 N S0000000.LOG S0000000.LOG
Table: "HAOQINGY"."MDCTAB"
Comment: REORG RECLAIM
Start Time: 20100101075636 End Time: 20100101075636 Status: A EID: 5

第一條為手動執行,第二條(EID:5)為自動維護觸發,時間戳確認自動執行。再次手動執行不再釋放空間。

總結

DB2 9.7 RECLAIM EXTENTS ONLY 實現 MDC 聯機空間回收,結合自動維護策略(閾值、窗口、啟用參數)達成全自動化,釋放 DBA 重複勞動,提升管理效率。生產環境建議根據業務特點設置合理閾值與維護窗口。

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