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

Oracle 表空間碎片管理與段存儲參數優化指南

     編輯:Oracle 資料庫基礎

空間層級結構

  • Tablespace(表空間)← 1..N Datafiles(數據文件)
  • Segment(段:表、索引、Undo、Temp 等)← 1..N Extents(區片)
  • Extent(區片)← 連續 Blocks(塊,DB_BLOCK_SIZE)

SAFE 碎片消除規則(Oracle 8i+ LMT 內建實現)

  1. 同一表空間內所有段**統一區片大小**:INITIAL=NEXT、PCTINCREASE=0,或使用 MINIMUM EXTENT 子句強制倍數。
  2. 區片參數**僅在表空間級定義**,創建對象時**不覆蓋**。
  3. 區片大小按段尺寸分級(Oracle 8/8i 建議):
    段大小區片大小
    <128MB128KB
    128MB-4GB4MB
    >4GB128MB
    全庫僅需 3 種區片表空間,預估對象大小放入對應表空間。
  4. 採用 **Locally Managed Tablespace (LMT)**:CREATE TABLESPACE ... EXTENT MANAGEMENT LOCAL,自動滿足規則 1-3。
  5. 段區片數控制在 1,024 以內(DDL 性能考量),持續增長段定期遷移。
  6. 超大段 (4GB-128GB) 獨立表空間 + 分區表。
  7. 臨時表空間指定 TEMPORARY 類型。
  8. 回滾段視事務均衡度決定是否設 OPTIMAL。
  9. **嚴禁**將用戶數據放入 SYSTEM 表空間。
  10. 數據文件大小 = 區片整數倍 + 1 Block(LMT 為 +64KB)。
  11. 統一區片表空間**勿做碎片整理**;非統一區片用 Exp/Imp 重組。
  12. 8i+ 提供 ALTER TABLE ... MOVE、ALTER INDEX ... REBUILD 快速重組。

單區片迷思

EXPORT COMPRESS=Y 將段壓縮為單區片並無實質性能增益:

  • 順序掃描受益前提是物理連續,現代 RAID 條帶化已打破邏輯/物理連續對應。
  • Oracle 管理數百區片段無性能損耗。
  • 單區片反而易產生表空間碎片。

段存儲參數 PCTFREE / PCTUSED

參數含義調優指引
PCTFREE塊預留給 UPDATE 的空間%防止行遷移。長度可變列頻繁 UPDATE 設 15-25%;只讀/固定長度可設 5-10%。默認 10%。
PCTUSED塊重新加入 Freelist 的使用率下限%避免過早擴展段。大行長度設低值 (10%);小行默認 40% 通常適宜。需滿足 Block_Size*(100-PCTFREE-PCTUSED) > Max_Row_Len。

正確設置兩參數可平衡空間利用率與 DML 性能,減少行遷移與段擴展頻率。

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