给小白演示 分库分表案例

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了给小白演示 分库分表案例相关的知识,希望对你有一定的参考价值。

参考技术A 受群里小伙伴之邀,搞一个分库分表案例,这样让很多没用过分库分表的心里也有个底,不然永远看到的都是网上的各种概念和解决方案性的文章。

由于用户表过于庞大,采取相关SQL优化,还是不能满足,所以现对其进行做分库分表。

数据库: my-sharding

数据库表: t_user

建表语句如下:

关于数据库分库分表通常有两种方案:

下面我们来演示水平拆分,大致思路:

加入有2000万条数据,那么为了方便演示,我们就暂定分为五个库,每个数据库对应五个表。

五个数据库:

每个数据库有五张表:

建表语句如下:

使用技术栈: JDK8 + MySQL + Spring Boot + Mybatis + Shardingsphere + Druid

maven 相关依赖:

配置文件相关配置如下:

分库分表的两个分片类:

下面是业务部分代码,先看 UserMapper.xml 内容:

UserMapper 接口:

为了更好地演示,我这里加入了 controller 层和 service 层,这也是大家平常开发套路。

service 层代码如下:

controller层代码如下:

最后是项目的启动类:

启动项目,启动成功:

下面我们来演示一下新增数据和查询。

先来添加数据到数据库中,这里使用的是IDEA中restful工具:

后台日志:

再查看数据库表中:

到此,我们的数据依旧落库,下面我们来演示一下数据查询。

浏览器里输入:

返回数据:

后台日志:

从日志和返回结果可以看出,已经为我们正确的选择到对应的数据库和表了,这样,一个分库分表的查询就成功了。

本文没有太多的概念,直接使用案例演示。相关概念性的文章,还有分库分表解决方案的文章,网上一堆堆的,感兴趣可以自行查阅。

以上是关于给小白演示 分库分表案例的主要内容,如果未能解决你的问题,请参考以下文章

数据库分库分表就这么简单+源码案例

微服务分库分表分布式事务管理APM链路跟踪性能分析演示项目

数据库分库分表

干货分享数据库分库分表(sharding)系列 拆分实施策略和示例演示

真实案例:用MyCat实现数据库读写分离与分库分表

分库分表如何平滑过渡?