分區功能核心價值
Oracle Partitioning 將表、索引、索引組織表切分為多個段,每個分區擁有獨立名稱與儲存屬性。對 DBA 可集體或個別管理;對應用程式完全透明,SQL 無需修改。
六大表分區策略
| 策略 | 適用情境 | 範例 |
| Range 分區 | 時間序列、連續數值範圍 | 訂單表依 order_date 每月一個分區 |
| List 分區 | 離散值清單 | 銷售表依 region 分區:北美、歐洲、亞太 |
| Hash 分區 | 資料均勻分散、無明顯範圍 | 大量交易表依 txn_id 雜湊分散 |
| Composite Range-Hash | 先 Range 再 Hash | 訂單先按月 Range,每月再 Hash 為 8 個子分區 |
| Composite Range-List | 先 Range 再 List | 銷售先按季 Range,每季依國家 List 切分 |
| Interval 分區 (10g 新增) | 自動建立 Range 分區 | 設定間隔 1 個月,資料到來自動擴展 |
索引組織表(IOT)僅支援 Range、List、Hash(不支援 Composite)。
三類分區索引
- Local Index:分區方式與基礎表完全一致,一對一對應,維護最簡單
- Global Partitioned Index:使用不同分區鍵,可 Range 或 Hash 分區,跨表分區
- Global Non-partitioned Index:傳統非分區索引,適用於小表或特殊查詢
三大效益深度解析
1. 管理性:化整為零
- 備份/還原可針對單一分區,縮短維護窗口
- 資料倉庫「滾動視窗」載入:每週新增一個分區,舊分區歸檔或刪除
2. 效能:Partition Pruning 與 Partition-Wise Join
- Partition Pruning:查詢只掃描相關分區。兩年歷史資料按周分區(104 個),查單週只讀 1 個分區,理論加速 100 倍
- Partition-Wise Join:兩大表同樣以 Join Key 分區,大 Join 拆解為多個小 Join 並行執行
3. 可用性:分區獨立性
- 單一分區損壞不影響其他分區線上服務
- 分區分置不同表空間,可獨立備份/恢復
- 維護操作並行化,縮短計畫停機時間
版本演進與未來展望
- Oracle8:Range
- Oracle8i:Hash、Composite Range-Hash
- Oracle9i:List
- Oracle 10g:強化 IOT 分區、Global Index 策略、並行索引維護
Oracle 持續擴展分區技術,滿足海量資料與高可用性需求。