Segment(段)是儲存邏輯物件資料的基本單位,由一或多個 Extent 組成。掌握段特性與管理技巧,能從儲存層面大幅提升效能。
零售銷售表年資料 10G,按季度分區 → 每分區 2.5G,獨立段存放於不同表空間/磁碟。
CREATE TABLE sales (...) PARTITION BY RANGE (sale_date) (
PARTITION q1 VALUES LESS THAN (TO_DATE('2024-04-01','YYYY-MM-DD')) TABLESPACE ts_q1,
PARTITION q2 VALUES LESS THAN (TO_DATE('2024-07-01','YYYY-MM-DD')) TABLESPACE ts_q2,
...
);
⚠️ 一段只能屬於一表空間,跨表空間需分區。
| 場景 | 建議 |
|---|---|
| 頻繁以 PK 精確查詢/範圍掃描 | IOT:表與 PK 索引合一,省略 Table Access by ROWID,查詢更快 |
| 索引極大,查詢模式多樣 | 分區索引:將索引拆分至多段,降低單段掃描量 |
| 一般 OLTP 表 | Heap Table + 一般索引 |
⚠️ IOT **必須定義 PK**;次要索引儲存 Logical ROWID (Guess),維護成本略高。
ORDER BY、GROUP BY、DISTINCT、UNION、SORT MERGE JOIN、CREATE INDEX、ANALYZE 等排序操作。PGA_AGGREGATE_TARGET,效能最佳)。PGA_AGGREGATE_TARGET 或 SORT_AREA_SIZE(手動模式)。ORDER BY indexed_col)。PARALLEL 分散排序壓力。CREATE TABLE product_info (
product_id NUMBER PRIMARY KEY,
name VARCHAR2(100),
spec VARCHAR2(500)
) TABLESPACE ts_data;
CREATE TABLE product_image (
product_id NUMBER PRIMARY KEY,
image BLOB
) TABLESPACE ts_lob
LOB (image) STORE AS (CACHE READS COMPRESS HIGH);
應用層以 PRODUCT_ID 關聯,按需載入圖像。
段管理四大技巧——**大表分區、IOT 選型、控制臨時段溢寫、LOB 物理分離**——直擊儲存層效能瓶頸,配合表空間規劃與參數調校,構建高效能 Oracle 儲存架構。