ShardingSphere3.x 分库分表实战

本文基于ShardingSphere的3.x版本,数据库基于MySQL8。

源码地址(亲测可启动+可验证分库分表功能,不行的话,评论区提问,说出具体失败情况):ShardingSphere3.x Demo

创建两个数据库ds0、ds1(我是在自己电脑搭了虚机,在上面安装了两个MySQL8的数据实例,端口分别是23306、23307,读者可按自己需要配置),和对应两个数据表user_0、user_1

ds0	
  ├── user_0 	
  └── user_1 	
ds1	
  ├── user_0 	
  └── user_1 

既然是分库分表 库结构与表结构一定是一致的。表脚本在源码路径:

src\main\resources\script\ds0.db

src\main\resources\script\ds1.db

按自己实际情况修改配置文件 application.properties 的数据库配置(主要是改两个数据库的IP和端口号)

启动项目,打开浏览器,分别访问

// 数据在 db1_user0 中
http://localhost:8080/insert?id=1&name=lhd&age=12
// 数据在 db0_user0 中
http://localhost:8080/insert?id=2&name=lhd&age=12
// 数据在 db1_user1 中
http://localhost:8080/insert?id=3&name=lhd&age=13
// 数据在 db0_user1 中
http://localhost:8080/insert?id=4&name=lhd&age=13

可以在控制台看到如下展示,表示插入成功了

根据分片算法和分片策略 不同的id以及age取模落入不同的库表 达到了分库分表的结果

 

 

 

  

有的人说 查询的话 该怎么做呢 其实也帮我们做好了 打开浏览器 访问:

http://localhost:8080/select

 

分别从ds0数据库两张表和ds1两张表查询结果 然后汇总结果返回

之前有朋友问我单表数据量达千万,想做水平分割,不分库,也可以的吧?

是完全可以的 只要修改配置文件的配置即可 非常灵活

通过代码大家也可以看到,我的业务层代码和平时单表操作是一样的,只需要引入sh配置和逻辑表保持现有的不便即可,使用无侵入我们的代码 可以在原有的基础上改动即可,可以说是非常方便。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AllenLeungX

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值