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

Oracle ASSM 自動段空間管理:原理、配置與性能優勢

     編輯:Oracle 資料庫基礎

從 LMT 到 ASSM:表空間管理的兩次飛躍

Oracle 8i 引入本地管理表空間(LMT),將擴展映射從數據字典移至表空間位圖,消除字典爭用。Oracle 9i 再進一步推出自動段空間管理(ASSM),用位圖取代傳統單向鏈表式 Freelist,實現塊級空間的高效管理。

兩種空間管理模式對比

維度傳統 Freelist (MANUAL)ASSM (AUTO)
元數據結構單向鏈表位圖
併發插入爭用Freelist 爭用熱塊多 Freelist 組 + 位圖並行搜尋
存儲參數PCTUSED, FREELISTS, FREELIST GROUPS忽略上述參數,自動管理
適用場景舊版本兼容、極少併發現代高併發 OLTP、大表

創建 ASSM 表空間實戰

CREATE TABLESPACE assm_lmt_ts
  DATAFILE 'c:\oracle\oradata\diogenes\asm_lmt.dbf' SIZE 5M
  EXTENT MANAGEMENT LOCAL
  SEGMENT SPACE MANAGEMENT AUTO;

將表/索引遷移至 ASSM 表空間:

CREATE TABLE new_cust TABLESPACE assm_lmt_ts AS SELECT * FROM customer;
ALTER INDEX cust_name_idx REBUILD TABLESPACE assm_lmt_ts;

關鍵行為變化

  • PCTUSED 被忽略:ASSM 根據塊內可用空間百分比自動決定是否重新加入位圖,無需手工調優。
  • INITIAL 最小 3 塊:首次擴展至少分配 3 個數據塊,避免微小擴展碎片。
  • NEXT / PCTINCREASE 失效:LMT 已自動管理擴展大小(統一或自動分配)。

位圖 Freelist 如何改善段存儲

位圖將每個塊狀態編碼為 2-3 位(未格式化/0-25%/25-50%/50-75%/75-100%),進程尋找可用塊時只需掃描位圖,無須順序遍歷鏈表,大幅降低 buffer busy waits 和 enq: HW - contention 等待事件。

遷移建議與注意事項

  • 新建表空間強烈建議採用 EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO。
  • 現有字典管理表空間(DMT)可用 DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL 遷移至 LMT,再重建對象啟用 ASSM。
  • 極少數舊應用依賴手工 Freelist 參數調優時,可保留 MANUAL 表空間隔離部署。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved