並行資料庫三大架構
| 架構 | 共享資源 | 擴展性 | 代表產品 |
| Shared Memory | 記憶體、磁碟 | ≤ 32-64 CPU (總線瓶頸) | 早期 SMP 資料庫 |
| Shared Disk | 磁碟 (各自記憶體) | 中等 (磁碟連接瓶頸) | Oracle RAC, DEC/Rdb Cluster |
| Shared Nothing | 無 (各節點獨立 CPU/記憶體/磁碟) | 近線性擴展 | Teradata, MySQL NDB Cluster |
MySQL NDB Cluster:Shared Nothing 實作
- 每個 Data Node 獨立儲存資料分片
- Management Node 協調叢集狀態
- SQL Node (mysqld) 接收查詢、解析、下推至 Data Node
- 自動資料分片、複製、故障轉移
- 適用:高可用、高寫入、電信級應用
I/O 平行化與水平分區
三大劃分技術
| 技術 | 原理 | 優點 | 缺點 |
| Round-robin | 循環分配列到 N 個磁碟 | 分布均勻、順序掃描快 | 點查詢/範圍查詢需全磺掃描 |
| Hash Partition | 雜湊(分區鍵) % N | 點查詢極快 (定位單磁碟) | 範圍查詢需全磁碟、熱點風險 |
| Range Partition | 依數值範圍劃分 | 範圍查詢/順序掃描優、易管理 | 資料傾斜 (熱分區) |
MySQL 5.1+ 原生分區
CREATE TABLE sales (
id INT NOT NULL,
sale_date DATE NOT NULL,
amount DECIMAL(10,2)
)
PARTITION BY RANGE (YEAR(sale_date)) (
PARTITION p2020 VALUES LESS THAN (2021),
PARTITION p2021 VALUES LESS THAN (2022),
PARTITION p2022 VALUES LESS THAN (2023),
PARTITION pmax VALUES LESS THAN MAXVALUE
);
分區優勢
- 分區裁剪:查詢僅掃描相關分區
- 獨立維護:
ALTER TABLE ... DROP PARTITION 秒級歸檔
- 分散儲存:各分區可指定不同磁碟 (
DATA DIRECTORY)
- 平行查詢:多執行緒掃描多個分區 (需參數啟用)
分區限制
- 分區鍵必須為主鍵/唯一鍵一部分
- 外鍵不支援
- 最大 8192 個分區 (5.6+)
- 所有分區同引擎
生產選型建議
- 時間序列資料 (日誌、交易) → RANGE 分區,按月/年劃分
- 高基數 ID/雜湊分布 → HASH 分區,均勻負載
- 多租戶隔離 → LIST 分區,按 tenant_id
- 超大表 (TB 級) → 考慮 ShardingSphere/ProxySQL 分庫分表 或 ClickHouse/Doris OLAP 引擎