報表系統三大表近 100 GB,按公司 (Company ID) 分區。200 家 VIP 佔 30% 資料量,需優先保證 VIP 查詢效能;非 VIP 公司數萬但單表資料少。
CREATE TABLE par_test
PARTITION BY LIST (owner)
SUBPARTITION BY HASH (owner)
STORE IN (example)
(
PARTITION p1 VALUES ('SYS'),
PARTITION p2 VALUES ('PUBLIC'),
PARTITION def VALUES (DEFAULT) SUBPARTITIONS 4
)
AS SELECT * FROM dba_objects;
DEFAULT 分區,再以 Hash 子分區均勻分散,避免大分區熱點。ADD PARTITION 新 VIP、COALESCE SUBPARTITION 調整非 VIP)。| 特性 | 語法範例 | 核心價值 |
|---|---|---|
| Interval Partition | PARTITION BY RANGE (dt) INTERVAL (NUMTOYMINTERVAL(1,'MONTH')) | 自動建立新月份分區,免人工維護 |
| Reference Partition | PARTITION BY REFERENCE (fk_name) | 子表自動跟隨父表分區,無需冗余分區鍵 |
| Virtual Column Partition | store NUMBER AS (buy-sell) PARTITION BY RANGE (store) | 虛擬欄位做分區鍵,零儲存開銷 |
| System Partition | PARTITION BY SYSTEM (PARTITION p1, PARTITION p2) | 應用完全控制資料落區,INSERT INTO t PARTITION(p1)... |
ORA-14701。MAXVALUE 分區。