| 資料特徵 | 策略 | 說明 |
|---|---|---|
| 筆數少、無 LOB | 直接同步資料列 | 延遲最低 |
| 筆數少、含 LOB (文字/二進位) | 壓縮後同步 | 降低頻寬佔用 |
| 筆數多 (批量 DML/DDL) | 解析 SQL、比較執行計畫成本 | 選擇同步資料或同步 SQL 指令,成本最低 |
單表 5000 萬筆 → 拆 100 表/庫,每片 50 萬,Index 重建、鎖衝突、備份窗口 **數量級下降**。
| 演算法 | 規則 | 優點 | 缺點 |
|---|---|---|---|
| 順序/範圍 | 按時間/ID 範圍 (2023→DB1, 2024→DB2) | 部分遷移易、範圍查詢快 | 資料傾斜 (熱點在新分片) |
| Hash 取模 | UserID % N → DB | 資料均勻、邏輯簡單 | 擴容/縮容需全量遷移 (Consistent Hashing 可緩解) |
| 查表路由 | 獨立 RouteDB 存 UserID→DB 映射 | 極致彈性、一對一精確 | 每查詢多一次 RouteDB 存取、單點風險 |
| 一致性雜湊 | 環狀雜湊環,虛擬節點平滑擴縮容 | 擴容僅影響少量資料遷移 | 實作複雜、範圍查詢不支援 |
IF 寫入壓力大 AND 需強一致性
→ 負載均衡叢集 (Moebius/ICX) 或 單寫多讀 + 同步複寫
ELSE IF 讀寫比 > 10:1 AND 可接受秒級延遲
→ 讀寫分離 (交易式複寫 / AlwaysOn 可讀次要複本)
ELSE IF 業務域清晰、跨域交易少
→ 垂直拆分 (微服務資料庫)
ELSE IF 單表 > 5000萬 OR 維護窗口不足
→ 水平拆分 (Hash/範圍/一致性雜湊) + 表分區
ELSE
→ 單庫優化 (索引、統計、查詢改寫、快取)
大型 SQL Server 架構演進遵循**「單庫優化 → 讀寫分離 → 垂直拆分 → 水平拆分/負載均衡」** 階梯。每階段引入的複雜度 (同步機制、路由層、分散式交易、運維工具) 需以**業務增長實證**為前提。**過早分庫分表是萬惡之源**;**缺乏監控與自動化運維的分庫分表是災難**。建議建立「資料庫健康度儀表板 (QPS、延遲、鎖等待、磁碟、備份窗口)」,以數據驅動架構升級決策。