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

Oracle 區塊效能優化:動態擴展、HWM、統計資訊與區塊大小四大支柱

     編輯:Oracle 資料庫基礎

資料區塊是 Oracle I/O 的基本單位,區塊管理效率直接決定系統吞吐量。本文聚焦四大核心:避免動態擴展缺陷、High Water Mark (HWM) 控制、表統計資訊解讀、區塊大小選型,提供可執行的診斷 SQL 與優化策略。

一、 避免動態擴展的空間管理

  • 採用本地管理表空間 (LMT) + 自動區塊分配 (AUTOALLOCATE)
  • 合理設定 Segment 初始/擴展大小,減少頻繁擴展帶來的鎖競爭
  • 監控即將擴展、碎片率高的 Segment:
    SELECT owner, table_name, blocks, empty_blocks
    FROM   dba_tables
    WHERE  empty_blocks / (blocks + empty_blocks) < 0.1;

二、 High Water Mark (HWM) 深度控制

  • 定義:Segment Header 記錄,標示已格式化區塊邊界,以 5 區塊為單位遞增
  • TRUNCATE 重設 HWM;DELETE 不動 HWM
  • Full Table Scan 必讀 HWM 以下所有區塊,HWM 以上空間僅浪費儲存
  • 回收 HWM 以上未用空間:ALTER TABLE t DEALLOCATE UNUSED;
  • 壓縮 HWM 以下碎片:
    • ALTER TABLE t MOVE TABLESPACE ts;(需重建索引、授權)
    • Exp/Imp 或 Data Pump 匯出匯入

三、 表統計資訊收集與關鍵指標

ANALYZE TABLE ndls.t_wh_shipping_bill COMPUTE STATISTICS;

SELECT num_rows, blocks, empty_blocks, avg_space, chain_cnt, avg_row_len
FROM   dba_tables
WHERE  owner = 'NDLS' AND table_name = 'T_WH_SHIPPING_BILL';

指標解讀:

四、 區塊大小選型策略

設定時機:資料庫建立時一次決定(DB_BLOCK_SIZE),後續不可變更,範圍 2K~64K,必為 OS 區塊整數倍。

欄位含義異常閾值與對策
CHAIN_CNT鏈式/遷移列數> 1% 列數 → 調大 PCTFREE、遷移至大區塊表空間
AVG_SPACE區塊平均剩餘空間過大 → 執行 MOVE 壓縮
EMPTY_BLOCKSHWM 以上空區塊佔比 > 20% → DEALLOCATE UNUSED
AVG_ROW_LEN平均列長含 overhead規劃 PCTFREE、區塊大小依據

五、 綜合優化檢查清單

  1. 確認所有表空間為 LMT + AUTOALLOCATE
  2. 每週跑一次 HWM/碎片監控報表,排程 MOVE/DEALLOCATE
  3. 定期收集統計資訊(DBMS_STATS),重點關注 CHAIN_CNT、AVG_SPACE
  4. 新建表空間時依應用類型選擇區塊大小(BLOCKSIZE 子句)
  5. 大批次載入前設定 NOLOGGING + PARALLEL,載入後收集統計

區塊層面的精細管理,是支撐高併發、大資料量系統穩定運行的基石。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
負載類型推薦大小優勢劣勢
OLTP(高併發、隨機單筆)2K~8K減少區塊鎖競爭、緩存命中率高索引層數多、大掃描 I/O 次數多
DSS/倉庫(大範圍掃描)16K~32K掃描吞吐高、索引較淺小行浪費空間、隨機存取爭用大