Sharding-JDBC 的好处与坏处¶
一、是什么¶
Sharding-JDBC 是轻量级分库分表中间件,客户端层。
二、好处¶
1. 透明化¶
对应用像普通 JDBC,SQL 不用改。
2. 分库分表¶
- 水平分表:按 user_id hash 分 16 表。
- 水平分库:分多个库。
- 读写分离。
3. 动态扩容¶
分片规则配置化。
4. 开源¶
Apache 项目,社区活跃。
三、坏处¶
1. 不支持跨库事务¶
跨库 JOIN 要自己写。分布式事务复杂。
2. 分布式 ID¶
要用雪花算法,不能自增主键。
3. 扩容麻烦¶
重新分片要迁移数据。
4. 性能损耗¶
SQL 解析、路由、结果归并。
5. 复杂查询受限¶
跨片 JOIN、聚合、排序性能差。
四、对比 MyCat¶
| Sharding-JDBC | MyCat | |
|---|---|---|
| 部署 | 客户端 | 中间件 |
| 性能 | 高(无网络跳转) | 中 |
| 语言 | Java | 多语言 |
| 运维 | 简单 | 复杂 |
五、什么时候用¶
- 单表千万级以上。
- 读写分离需求。
- 业务能接受分片限制。
不要过度分库分表
单表 < 500 万不用分。分库分表是架构升级,不是银弹。