Sharding-JDBC ShardingSphere原 Sharding-JDBC是一个分库分表中间件它的核心特点是对应用“无侵入”把 SQL 在 JDBC 层进行路由、改写、分片执行。⭐ 1. Sharding-JDBC 是干什么的一句话让你在不改业务代码的情况下实现分库分表能力。⭐ 2. 使用方式总览使用 Sharding-JDBC 主要分 4 步1. 引入依赖 2. 配置分片规则 3. 配置数据源 4. 正常写 SQL⭐ 3. 第一种方式Spring Boot 集成最常见✔ 1引入依赖dependency groupIdorg.apache.shardingsphere/groupId artifactIdshardingsphere-jdbc-core/artifactId version5.4.0/version /dependency⭐ 4. 第二步配置分库分表规则核心比如订单表分表order_0 order_1 order_2✔ YAML配置示例spring: shardingsphere: datasource: names: ds0 ds0: type: com.zaxxer.hikari.HikariDataSource driver-class-name: com.mysql.cj.jdbc.Driver jdbc-url: jdbc:mysql://localhost:3306/order_db username: root password: root rules: sharding: tables: t_order: actual-data-nodes: ds0.t_order_$-{0..2} table-strategy: standard: sharding-column: order_id sharding-algorithm-name: order-inline sharding-algorithms: order-inline: type: INLINE props: algorithm-expression: t_order_$-{order_id % 3}⭐ 5. 第三步正常写 SQL重点你业务代码完全不变SELECT * FROM t_order WHERE order_id 1001; ShardingSphere 自动帮你order_id % 3 1 → 路由到 t_order_1⭐ 6. 核心能力✔ 1分片路由根据规则选择数据库/表✔ 2SQL改写自动改写 SQLt_order → t_order_0 / t_order_1✔ 3结果归并Merge比如SELECT * FROM t_order会查多个表合并结果返回给应用✔ 4读写分离支持master写slave读✔ 5分布式主键支持Snowflake IDUUID⭐ 7. 分片策略重点✔ 1INLINE表达式order_id % 2✔ 2HASHhash(user_id)✔ 3RANGE1000 ~ 2000✔ 4自定义算法最常用public class MyShardingAlgorithm implements StandardShardingAlgorithmLong { public String doSharding(CollectionString tables, PreciseShardingValueLong value) { return t_order_ (value.getValue() % 2); } }⭐ 8. 分库分表执行流程面试重点SQL ↓ 解析 SQL ↓ 获取分片键 ↓ 计算路由规则 ↓ 路由到具体库/表 ↓ 执行 SQL ↓ 结果归并⭐ 9. 使用场景适合电商订单用户表日志表高并发写入⭐ 10. 不适合场景面试加分不适合强事务系统跨表复杂 JOIN 很多小数据量系统⭐ 11. Sharding-JDBC vs MyCat对比Sharding-JDBCMyCat形态JDBC层中间代理性能高中等侵入性无有运维简单复杂⭐ 12. 面试标准回答✔ 标准答案Sharding-JDBC 是 ShardingSphere 提供的分布式数据库中间件它工作在 JDBC 层通过对 SQL 进行解析、路由和改写实现分库分表能力。开发者只需要配置分片规则例如分片键和分片算法业务代码无需修改SQL 会自动路由到对应的库或表执行并在结果层进行归并返回。它支持水平分表、读写分离以及分布式主键生成适用于高并发电商等场景。⭐ 13. 一句话总结Sharding-JDBC 本质是“在 JDBC 层做 SQL 路由 改写 结果归并”的分库分表框架。