SpringBoot集成Sharding——JDBC分库分表

本文详细介绍了如何在SpringBoot中集成Sharding-JDBC进行分库分表操作,包括分库分表的概念、POM配置、分表与分库配置,并通过实例展示了具体的操作步骤和执行效果。

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

Sharding——JDBC

它定位为轻量级Java框架,在Java的JDBC层提供的额外服务。它使用客户端直连数据库,以jar包形式提供服务,无需额外部署和依赖,可理解为增强版的JDBC驱动,完全兼容JDBC和各种ORM框架。

对比图:
在这里插入图片描述
开发人员只需正常写查询、mapper即可、无感知。

分库分表概念

随着业务的不断增长,数据也飞速增长,访问也随之变慢,添加从库、新建索引等很多操作仍严重下降,分库分表需求迫在眉睫。

方案一:
通过提升服务性能来提升数据处理能力,例如:扩容、CPU等,但成本很高。

方案二:
把数据分散在不同数据集中,大表拆成小表、数据落盘到不同库中,从而使得数据集变小从而提升性能。

  • 垂直分库
    为依据,按照业务需求将拆到不同库中。
    每个的结构不一样。
    每个的数据不一样,没有交集。
    所有库的并集是全量数据。

场景:
这一步拆分基本是服务化,例如,中间表、字典表、配置表等越来越多,可以将这些表拆分到单独库中,甚至可以微服务化。

  • 垂直分表
    字段为依据,按照字段活跃性拆到不同中。
    每张表结构不一样。
    每张表数据也不一样,至少有一列交集用于关联。
    所有表并集数据是全量数据。

场景:
用户表中有id、名称、住址等信息,每次查询用户信息时住址字段使次数很低,大字段等单独拆分一张,从而减少IO提升性能。

  • 水平分库
    字段为依据,按照一定策略(hash、range等),将一个中的数据拆分到多个库中。
    每个库结构都一样。
    每个库数据都不一样,没有交集。
    所有库并集是全量数据。

场景:
库多了,IO和CPU压力可以成倍缓解。

  • 水平分表
    字段为依据,按照一定策略(hash、range等),将一个中的数据拆分到多个表中。
    每张表结构都一样。
    每张表数据都不一样,没有交集。
    所有表并集是全量数据。

场景:
表的数据量少了,SQL执行效率高,IO和CPU压力可以成倍缓解。

POM文件

	<dependencies>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.3.2</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值