跳转至

Sharding-JDBC 的好处与坏处

一、是什么

Sharding-JDBC 是轻量级分库分表中间件,客户端层。

应用 → Sharding-JDBC → MySQL 主库1/2/3

二、好处

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 万不用分。分库分表是架构升级,不是银弹。