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

Oracle PCTUSED 參數深度解析:Freelist 機制、區塊鏈結與效能影響

     編輯:Oracle 資料庫基礎

Freelist 核心機制

Oracle 透過 Freelist 管理表空間可用區塊。Freelist 串結構位於 Segment Header(第一個區塊)。PCTFREE 控制 Unlink(移出 Freelist),PCTUSED 控制 Relink(重回 Freelist)。

參數互動邏輯

  • PCTFREE=10:區塊保留 10% 空間供列更新擴展,使用率達 90% 時移出 Freelist
  • PCTUSED=40:區塊使用率降至 40% 以下時重回 Freelist

關鍵誤區:重回 Freelist 後的行為

常見錯誤認知:區塊重回 Freelist 後,使用率超過 60% 會再次移出。
正確機制:區塊一旦因刪除操作重回 Freelist,將持續留在 Freelist 中直到達到 PCTFREE 閾值。即使使用率暫時超過 60%(100%-PCTFREE),也不會移出。只有滿足 PCTFREE 條件才 Unlink。

高 PCTUSED vs 低 PCTUSED 的效能抉擇

Freelist 爭用診斷

-- 檢視 Freelist 等待
SELECT * FROM V$WAITSTAT WHERE CLASS = 'free list';

-- 區塊層級爭用分析
SELECT file#, block#, class, count(*) 
FROM V$WAITSTAT, V$SESSION_WAIT 
WHERE event = 'buffer busy waits' AND p1 = file# AND p2 = block#
GROUP BY file#, block#, class;

調優建議

  1. 依平均列長與區塊大小計算合理 PCTUSED,確保 Freelist 區塊至少容納 1 列
  2. 高併發 INSERT 表:設定適當 FREELISTS,考慮分區表消除熱點
  3. 定期監控 CHAIN_CNT、AVG_SPACE 判斷是否需重組
  4. ERP 核心交易表:優先效能,接受適度空間浪費
  5. 歷史歸檔表:優先空間重用,設定較高 PCTUSED

相關參數速查

  • PCTFREE:預留更新空間,防止列遷移
  • PCTUSED:控制區塊重回 Freelist 門檻
  • FREELISTS:平行插入 Freelist 數量
  • FREELIST GROUPS:RAC 實例級 Freelist 隔離
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
策略PCTUSED 設定適用場景風險
積極空間重用高值(如 60-80)儲存空間昂貴、資料變動大、歷史資料較少頻繁區塊滿載、I/O 增加、Freelist 爭用
優先插入效能低值(如 20-40)高併發插入、OLTP 核心表、儲存成本可接受空間碎片增加、可能需定期重組