專案背景
Spock Proxy 由實際 Rails 專案衍生,基於 MySQL Proxy 開發,專注 Range-based Horizontal Partitioning(範圍水平分區)。
核心改進
| MySQL Proxy | Spock Proxy |
| Lua 腳本處理邏輯,效能開銷大 | 移除 Lua,C 級邏輯,大幅提升吞吐 |
| 客戶端直連後端驗證 | 統一代理層驗證,分離前後端連接 |
| 靜態連接池 | 動態連接池,受益於驗證機制改進 |
架構示意

- Client → Spock Proxy → 多個 MySQL Shard
- Proxy 根據分區鍵路由查詢至對應分片
- 支援跨分片查詢合併結果集
適用場景
- 單表超大(>5000萬行),寫入/查詢瓶頸明顯
- 業務明確可按範圍分區(時間、用戶ID、區域)
- 技術棧不限於 Rails,PHP/.NET/Java 皆可透過 MySQL 協議接入
現代替代方案
- ShardingSphere(原 Sharding-JDBC/Proxy):Java 生態完善,支援讀寫分離、分散式事務、影子庫
- Vitess:YouTube 開源,Kubernetes 原生,大規模生產驗證
- MyCat:國產中間件,功能豐富,社群活躍
- ProxySQL:高效能 Proxy,支援查詢重寫、快取、鏡像
選型建議
新專案優先考慮 ShardingSphere/Vitess,成熟社群與雲原生支援更完善。Spock Proxy 適合存量 Ruby/Rails 系統維護或輕量級自研需求。