springboot整合sharding-jdbc实现分库分表详解

目录

一、为什么需要分库分表

1.1 分库分表的优势

二、分库分表基本概念

2.1 垂直分表

2.2 水平分表

2.3 垂直分库

2.4 水平分库

三、分库分表带来的问题

3.1 分布式事务问题

3.2 跨节点关联查询问题

3.3 跨节点分页、排序问题

3.4 主键避重问题

四、分库分表常用方案

4.1 sharding-sphere

4.2 cobar

4.3 TDDL

4.4 mycat

4.5 建议使用方案

4.5.1 sharding-jdbc和mycat对比

五、分库分表基本概念

5.1 基础概念

逻辑表

真实表

数据节点

绑定表

广播表

5.2 分片以及分片策略

5.2.1 分片键

5.2.2 常用的分片算法

5.2.3 常用分片策略

六、springboot整合sharding-jdbc

6.1 前置准备

6.1.1 创建数据库表

6.1.2 搭建springboot父子模块

6.2 sharding-jdbc分表实现

6.2.1 基础配置文件

6.2.2 实体类

6.2.3 接口层

5.2.4 业务实现

6.2.4 接口层

6.2.5 添加swagger配置类

6.2.6 启动类

6.2.7 效果测试

6.3 sharding-jdbc分库实现

6.3.1 准备另一个数据库

6.3.2 修改配置文件

6.3.3 添加测试接口

6.3.4 查询接口数据测试

七、常用分片算法的使用

7.1 标准分片算法

7.1.1 自定义数据库分片实现类

7.1.2 自定义表的分片实现类

7.1.3 完整配置文件

7.1.4 添加测试接口

7.2 标准分片算法之范围分片

7.2.1 添加数据库自定义分片策略类

7.2.2 添加表自定义分片策略类

7.2.3 将上述的类配置到配置文件中

7.2.4 添加测试接口

7.3 复合分片算法

7.3.1 标准分片问题

7.3.2 前置准备

7.3.3 添加自定义复合分片策略类

7.3.4 将自定义策略类配置到配置文件

7.3.5 接口测试

 八、写在文末


一、为什么需要分库分表

生产环境中,随着业务数据量的不断增长,尤其是核心业务数据库和表的数据量达到一定量级的时候,查询性能的瓶颈就会暴露出来,不管是mysql还是其他数据库。如果不对数据库或表进行分库分表,通常可以引入其他的存储,比如es,mongodb,数据量较小的情况下,甚至可以考虑redis等。

在行业规约中,通常来说,单表数据量达到500万时就需要考虑进行分库分表了,当然,提升查询性能的方案,分库分表不是必须的,但是如果系统架构本身不是很复杂的话,与其引入一门新的存储介质,分库分表不失为一种相对简单且容易操作的方案。

1.1 分库分表的优势

理论上讲,分库分表主要用于解决查询的性能问题,使用分库分表之后,可以带来如下好处:

  • 分表之后,单表数据量降低,查询性能有一定提升;
  • 分表之后,可以合理的对冷热数据进行区分和处理;
  • 分表之后,可以使得关键业务字
  • 107
    点赞
  • 109
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 188
    评论
评论 188
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小码农叔叔

谢谢鼓励

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

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

打赏作者

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

抵扣说明:

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

余额充值