1. 为什么需要分库分表
当业务数据量达到千万级甚至亿级时,单机数据库很快就会遇到性能瓶颈。我经历过一个电商项目,订单表数据量突破5000万后,简单的查询都要耗时数秒,更别提高峰期并发写入时的锁竞争问题了。这时候就需要引入分库分表方案,而ShardingSphere正是Java生态中最成熟的选择之一。
ShardingSphere是一套开源的分布式数据库中间件解决方案,由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar组成。其中Sharding-JDBC最适合与Spring Boot集成,它工作在客户端层面,以jar包形式提供服务,不需要额外部署中间件。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备与基础配置
2.1 依赖引入
首先在pom.xml中添加必要依赖:
xml复制<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>sharding-jdbc-spring-boot-starter</artifactId>
<version>5.3.2</version>
</dependency>
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
</dependency>
注意:ShardingSphere 5.x版本开始使用新的命名空间,与4.x配置不兼容。如果是从旧版本升级需要特别注意。
2.2 数据源配置
在application.yml中配置物理数据源:
yaml复制spring:
shardingsphere:
datasource:
names: ds0,ds1
ds0:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
jdbc-url: jdbc:mysql://localhost:3306/db0
username: root
