在分庫分表的設計中,除了常見的 Hash 分片,還有多種策略根據業務場景靈活選擇。以下是幾種主流的分庫分表策略及其應用場景、技術實現和優缺點分析,結合項目經驗(如標易行投標服務平臺的高并發場景)進行說明:
一、常見分庫分表策略
1. 范圍分片(Range Sharding)
- 原理:按分片鍵的范圍劃分數據(如時間、ID區間)。
-- 示例:訂單表按創建時間分表 CREATE TABLE orders_202401 (分區鍵: create_time < '2024-02-01'); CREATE TABLE orders_202402 (分區鍵: create_time < '2024-03-01');
- 適用場景:
- 時間序列數據(如日志、訂單按月份歸檔)。
- 需要范圍查詢(如查詢某用戶近3個月的訂單)。
- 優點:
- 查詢高效:范圍查詢只需訪問特定分片。
- 擴容簡單:新增分片只需處理新范圍數據。
- 缺點:
- 數據分布不均:可能導致新分片負載高,舊分片閑置。
- 熱點問題:如雙11訂單集中在某個月份,導致單分片壓力大。
2. 一致性哈希分片(Consistent Hashing)
- 原理:將數據和節點映射到哈希環,數據按順時針路由到最近節點。
// 虛擬節點解決數據傾斜 List<String> virtualNodes = generateVirtualNodes(nodes,