SpringBoot整合Sharding-JDBC实现分库分表,必须掌握!

本文介绍了如何使用SpringBoot整合Sharding-JDBC实现数据库的分库分表,包括水平分表、水平分库、垂直分库的操作步骤,并通过测试验证了分片规则。详细讲解了Sharding-JDBC的功能和配置,为解决大数据量时的性能问题提供了方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述

什么是ShardingSphere

是一套开源的分布式数据库中间件解决方案组成的生态圈,由JDBC、Proxy和Sidecar三部分组成。其定位为关系型数据库中间件,旨在充分合理地在分布式的场景下利用关系型数据库的计算和存储能力,而并非实现一个全新的关系型数据库。更多详情请参阅ShardingSphere官网

什么是分库分表

随着时间和业务的发展,造成表里面的数据越来越多,如果再去对数据库表curd操作,很容易造成性能问题,这个时候,为了解决由于数据量过大而造成数据库性能降低的问题,常见的解决方案其一是从硬件上增加数据库服务器的存储,其二是分库分表处理。
分库分表有两种方式:垂直切分和水平切分
垂直分表:操作数据库中某张表,把这张表中的一部分字段数据存到一张新表里面,再把这张表另一部分字段数据存到另外一张表里面
垂直分库:把单一数据库按照业务进行划分,专库专表
水平分表:在同一个数据库中建立多张表,根据一定的规则划分主键ID,将不同的数据存放在多个表中
水平分库:将一张表建立在多个数据库,根据一定的规则划分主键ID,将数据平均存放到每一个库
随着数据库数据量增加,不要马上考虑做水分切分,首先考虑缓存处理,读写分离,使用索引等等方式,如果这些方式不能根本解决问题了,再考虑做水平分库和水平分表

Sharding-JDBC简介

是一个轻量级的Java框架,是增强版的JDBC驱动
主要目的是简化对分库分表之后数据相关操作

技术栈

SpringBoot2.3.4
MyBatis-Plus3.4.0
Sharding-JDBC
HikariCP连接池

Sharding-JDBC实现水平分表

创建表

在数据库创建两张表course_1和course_2
约定规则:如果添加的主键ID是偶数把数据添加进course_1表,如果是奇数添加进course_2表

CREATE TABLE course_1 (
 id BIGINT(20) NOT NULL COMMENT '主键ID',
 name varchar(20) NULL COMMENT '课程名称',
 status TINYINT(2) DEFAULT 10 NOT NULL COMMENT '课程状态10:正常;20:异常',
 CONSTRAINT course_1_pk PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci COMMENT='课程表1';
CREATE TABLE course_2 (
 id BIGINT(20) NOT NULL COMMENT '主键ID',
 name varchar(20) NULL COMMENT '课程名称',
 status TINYINT(2) DEFAULT 10 NOT NULL COMMENT '课程状态10:正常;20:异常',
 CONSTRAINT course_2_pk PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci COMMENT='课程表2';


pom.xml中引入依赖

<dependency>
    <groupId>org.apache.shardingsphere</groupId>
    <artifactId>sharding-jdbc-spring-boot-starter</artifactId>
    <version>4.1.1</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>
<!--mybatis-plus-->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.4.0</version>
</dependency>

在application.properties中添加配置文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

猿码天地

相互学习,谢谢您的打赏。

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

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

打赏作者

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

抵扣说明:

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

余额充值