如何使用sharding-jdbc实现水平分库+水平分表
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章给大家分享的是有关如何使用sharding-jdbc实现水平分库+水平分表的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。分库分表策略:将id为偶数的存入到库1中,奇
千家信息网最后更新 2026年11月02日如何使用sharding-jdbc实现水平分库+水平分表
这篇文章给大家分享的是有关如何使用sharding-jdbc实现水平分库+水平分表的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
分库分表策略:将id为偶数的存入到库1中,奇数存入到库2中,在每个库中,再根据学生的性别分别存到到表1和表2中。
新建两个数据库sharding_db1和sharding_db2,在两个数据库中在分别创建结构相同的两张表,student_1和student_2。
CREATE TABLE `NewTable` (`ID` bigint(20) NOT NULL ,`NAME` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL ,`AGE` int(11) NOT NULL ,`GENDER` int(1) NOT NULL ,PRIMARY KEY (`ID`));
相比前面文章中,将gender性别字段设置成了int类型,方便根据性别再进行分表。
修改配置文件
spring.main.allow-bean-definition-overriding=true# 配置Sharding-JDBC的分片策略# 配置数据源,给数据源起名g1,g2...此处可配置多数据源spring.shardingsphere.datasource.names=g1,g2# 配置数据源具体内容:连接池,驱动,地址,用户名,密码spring.shardingsphere.datasource.g1.type=com.alibaba.druid.pool.DruidDataSourcespring.shardingsphere.datasource.g1.driver-class-name=com.mysql.cj.jdbc.Driverspring.shardingsphere.datasource.g1.url=jdbc:mysql://localhost:3306/sharding_db1?characterEncoding=utf-8&useUnicode=true&useSSL=false&serverTimezone=UTCspring.shardingsphere.datasource.g1.username=rootspring.shardingsphere.datasource.g1.password=123456spring.shardingsphere.datasource.g2.type=com.alibaba.druid.pool.DruidDataSourcespring.shardingsphere.datasource.g2.driver-class-name=com.mysql.cj.jdbc.Driverspring.shardingsphere.datasource.g2.url=jdbc:mysql://localhost:3306/sharding_db2?characterEncoding=utf-8&useUnicode=true&useSSL=false&serverTimezone=UTCspring.shardingsphere.datasource.g2.username=rootspring.shardingsphere.datasource.g2.password=123456# 配置数据库的分布,表的分布spring.shardingsphere.sharding.tables.student.actual-data-nodes=g$->{1..2}.student_$->{1..2}# 指定student表 主键gid 生成策略为 SNOWFLAKEspring.shardingsphere.sharding.tables.student.key-generator.column=idspring.shardingsphere.sharding.tables.student.key-generator.type=SNOWFLAKE# 指定数据库分片策略 约定id值是偶数添加到sharding_db1中,奇数添加到sharding_db2中spring.shardingsphere.sharding.tables.student.database-strategy.inline.sharding-column=idspring.shardingsphere.sharding.tables.student.database-strategy.inline.algorithm-expression=g$->{id % 2 + 1}# 指定表分片策略 约定gender值是0添加到student_1表,如果gender是1添加到student_2表spring.shardingsphere.sharding.tables.student.table-strategy.inline.sharding-column=genderspring.shardingsphere.sharding.tables.student.table-strategy.inline.algorithm-expression=student_$->{gender % 2 + 1}# 打开sql输出日志spring.shardingsphere.props.sql.show=true配置多个数据源时,使用逗号隔开,分别配置其属性。除了配置表分片策略,还需配置库分配策略。
测试类
@SpringBootTestclass ShardingJdbcDemoApplicationTests { @Autowired private StudentMapper studentMapper; @Test public void test01() { for (int i = 0; i < 15; i++) { Student student = new Student(); student.setName("wuwl"); student.setAge(27); student.setGender(i%2); studentMapper.insert(student); } }}运行效果:
看样子是成功了,查看数据库数据。
sharding_db1.student_1:

sharding_db1.student_2:

sharding_db2.student_1:
sharding_db2.student_2:
感谢各位的阅读!关于"如何使用sharding-jdbc实现水平分库+水平分表"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
数据
配置
策略
数据库
数据源
分表
水平
分库
内容
性别
两个
偶数
奇数
文章
更多
篇文章
约定
不错
实用
相同
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技股
科技赋能下的互联网金融
工业互联网科技新基建
互联网巨头反垄断金融科技
重庆互联网络科技
深圳互联网科技公司
合肥互联网科技公司
未来的互联网科技
互联网科技汛
上海电发互联网科技有限公司
须眉科技是互联网公司吗
茂名市互联网科技产业园
科技互联网大厂
朱啸虎曾投资哪些互联网科技企业
互联网数据科技专业
为客找房互联网科技公司怎么样
广州富喜互联网络科技
图游互联网科技
九思连强互联网电子科技有限公司
北京天晋互联网科技有限公司
互联网科技未来
科技制造互联网公司
亿人帮互联网科技
左右互联网络科技
互联网科技寓意
辽宁互联网新科技
互联网金融科技展
西安小鹰速贷互联网科技有限公司
明优互联网科技有限公司
互联网科技手抄报图片