Oracle 8i 引入本地管理表空間(LMT),將擴展映射從數據字典移至表空間位圖,消除字典爭用。Oracle 9i 再進一步推出自動段空間管理(ASSM),用位圖取代傳統單向鏈表式 Freelist,實現塊級空間的高效管理。
| 維度 | 傳統 Freelist (MANUAL) | ASSM (AUTO) |
|---|---|---|
| 元數據結構 | 單向鏈表 | 位圖 |
| 併發插入爭用 | Freelist 爭用熱塊 | 多 Freelist 組 + 位圖並行搜尋 |
| 存儲參數 | PCTUSED, FREELISTS, FREELIST GROUPS | 忽略上述參數,自動管理 |
| 適用場景 | 舊版本兼容、極少併發 | 現代高併發 OLTP、大表 |
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;
位圖將每個塊狀態編碼為 2-3 位(未格式化/0-25%/25-50%/50-75%/75-100%),進程尋找可用塊時只需掃描位圖,無須順序遍歷鏈表,大幅降低 buffer busy waits 和 enq: HW - contention 等待事件。
EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO。DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL 遷移至 LMT,再重建對象啟用 ASSM。