資料區塊是 Oracle I/O 的基本單位,區塊管理效率直接決定系統吞吐量。本文聚焦四大核心:避免動態擴展缺陷、High Water Mark (HWM) 控制、表統計資訊解讀、區塊大小選型,提供可執行的診斷 SQL 與優化策略。
SELECT owner, table_name, blocks, empty_blocks
FROM dba_tables
WHERE empty_blocks / (blocks + empty_blocks) < 0.1;
ALTER TABLE t DEALLOCATE UNUSED;ALTER TABLE t MOVE TABLESPACE ts;(需重建索引、授權)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';
指標解讀:
| 欄位 | 含義 | 異常閾值與對策 | |
|---|---|---|---|
| CHAIN_CNT | 鏈式/遷移列數 | > 1% 列數 → 調大 PCTFREE、遷移至大區塊表空間 | |
| AVG_SPACE | 區塊平均剩餘空間 | 過大 → 執行 MOVE 壓縮 | |
| EMPTY_BLOCKS | HWM 以上空區塊 | 佔比 > 20% → DEALLOCATE UNUSED | |
| AVG_ROW_LEN | 平均列長含 overhead | 規劃 PCTFREE、區塊大小依據 |
| 負載類型 | 推薦大小 | 優勢 | 劣勢 |
|---|---|---|---|
| OLTP(高併發、隨機單筆) | 2K~8K | 減少區塊鎖競爭、緩存命中率高 | 索引層數多、大掃描 I/O 次數多 |
| DSS/倉庫(大範圍掃描) | 16K~32K | 掃描吞吐高、索引較淺 | 小行浪費空間、隨機存取爭用大 |