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

Oracle 競爭調整深度解析:FREELISTS、PCTFREE、PCTUSED 參數權衡與最佳實踐

     編輯:Oracle 資料庫基礎

背景

Oracle 自動管理表空間自由空間,但高 INSERT/UPDATE 系統需深入理解 EXTENT、自由區塊管理與 FREELISTS 行為,否則預設參數常導致 DML 緩慢。

核心機制

  • FREELIST:串聯在 Segment Header(第一個塊),記錄可用塊
  • PCTFREE:控制塊從 Freelist 移出(Unlink),保留 % 供行更新擴展
  • PCTUSED:控制塊重回 Freelist(Relink),使用率低於 % 時回歸

常見誤區:以為超過 PCTUSED 即移出,實則只有達到 PCTFREE 才會 Unlink。

參數權衡:空間重用 vs. 高效能

目標PCTUSED 設定結果
有效空間重用高值(如 80)較滿塊回 Freelist,但每塊僅能容納少量新行 → I/O 增加
高效能低值(如 20)接近空塊才回 Freelist,單塊容納更多行 → 減少 I/O,擴展新塊比重用舊塊更快

儲存參數設定黃金法則

  1. 依平均行長與區塊大小設定 PCTFREE/PCTUSED,確保 Freelist 塊確能容納一行
  2. 高 INSERT 系統:低 PCTUSED、適當 PCTFREE、增加 FREELISTS 數量減少爭用
  3. 唯讀/少更新系統:可提高 PCTUSED 節省空間
  4. 參數可隨時 ALTER TABLE 調整,優秀 DBA 應知最佳值

FREELIST GROUPS

RAC 環境下,不同實例使用不同 Freelist Group,避免跨實例爭用 Segment Header。

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