广告
返回顶部
首页 > 资讯 > 精选 >如何使用sharding-jdbc实现水平分库+水平分表
  • 592
分享到

如何使用sharding-jdbc实现水平分库+水平分表

2023-06-22 03:06:05 592人浏览 八月长安
摘要

这篇文章给大家分享的是有关如何使用sharding-jdbc实现水平分库+水平分表的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。分库分表策略:将id为偶数的存入到库1中,奇数存入到库2中,在每个库中,再根据学生的

这篇文章给大家分享的是有关如何使用sharding-jdbc实现水平分库+水平分表的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

分库分表策略:将id为偶数的存入到库1中,奇数存入到库2中,在每个库中,再根据学生的性别分别存到到表1和表2中。

新建两个数据库sharding_db1和sharding_db2,在两个数据库中在分别创建结构相同的两张表,student_1和student_2。

CREATE TABLE `NewTable` (`ID`  bigint(20) NOT NULL ,`NAME`  varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL ,`AGE`  int(11) NOT NULL ,`GENDER`  int(1) NOT NULL ,PRIMARY KEY (`ID`));

相比前面文章中,将gender性别字段设置成了int类型,方便根据性别再进行分表。

修改配置文件

spring.main.allow-bean-definition-overriding=true# 配置Sharding-JDBC的分片策略# 配置数据源,给数据源起名g1,g2...此处可配置多数据源spring.shardingsphere.datasource.names=g1,g2# 配置数据源具体内容:连接池,驱动,地址,用户名,密码spring.shardingsphere.datasource.g1.type=com.alibaba.druid.pool.DruidDataSourcespring.shardingsphere.datasource.g1.driver-class-name=com.mysql.cj.jdbc.Driverspring.shardingsphere.datasource.g1.url=jdbc:Mysql://localhost:3306/sharding_db1?characterEncoding=utf-8&useUnicode=true&useSSL=false&serverTimezone=UTCspring.shardingsphere.datasource.g1.username=rootspring.shardingsphere.datasource.g1.passWord=123456spring.shardingsphere.datasource.g2.type=com.alibaba.druid.pool.DruidDataSourcespring.shardingsphere.datasource.g2.driver-class-name=com.mysql.cj.jdbc.Driverspring.shardingsphere.datasource.g2.url=jdbc:mysql://localhost:3306/sharding_db2?characterEncoding=utf-8&useUnicode=true&useSSL=false&serverTimezone=UTCspring.shardingsphere.datasource.g2.username=rootspring.shardingsphere.datasource.g2.password=123456# 配置数据库的分布,表的分布spring.shardingsphere.sharding.tables.student.actual-data-nodes=g$->{1..2}.student_$->{1..2}# 指定student表 主键gid 生成策略为 SNOWFLAKEspring.shardingsphere.sharding.tables.student.key-generator.column=idspring.shardingsphere.sharding.tables.student.key-generator.type=SNOWFLAKE# 指定数据库分片策略 约定id值是偶数添加到sharding_db1中,奇数添加到sharding_db2中spring.shardingsphere.sharding.tables.student.database-strategy.inline.sharding-column=idspring.shardingsphere.sharding.tables.student.database-strategy.inline.alGorithm-expression=g$->{id % 2 + 1}# 指定表分片策略 约定gender值是0添加到student_1表,如果gender是1添加到student_2表spring.shardingsphere.sharding.tables.student.table-strategy.inline.sharding-column=genderspring.shardingsphere.sharding.tables.student.table-strategy.inline.algorithm-expression=student_$->{gender % 2 + 1}# 打开sql输出日志spring.shardingsphere.props.sql.show=true

配置多个数据源时,使用逗号隔开,分别配置其属性。除了配置表分片策略,还需配置库分配策略。

测试

@SpringBootTestclass ShardingJdbcDemoApplicationTests {    @Autowired    private StudentMapper studentMapper;    @Test    public void test01() {        for (int i = 0; i < 15; i++) {            Student student = new Student();            student.setName("wuwl");            student.setAge(27);            student.setGender(i%2);            studentMapper.insert(student);        }    }}

运行效果:

如何使用sharding-jdbc实现水平分库+水平分表

看样子是成功了,查看数据库数据。

sharding_db1.student_1:

如何使用sharding-jdbc实现水平分库+水平分表

sharding_db1.student_2:

如何使用sharding-jdbc实现水平分库+水平分表

sharding_db2.student_1:

如何使用sharding-jdbc实现水平分库+水平分表

sharding_db2.student_2:

如何使用sharding-jdbc实现水平分库+水平分表

感谢各位的阅读!关于“如何使用sharding-jdbc实现水平分库+水平分表”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: 如何使用sharding-jdbc实现水平分库+水平分表

本文链接: https://www.lsjlt.com/news/302112.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何使用sharding-jdbc实现水平分库+水平分表
    这篇文章给大家分享的是有关如何使用sharding-jdbc实现水平分库+水平分表的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。分库分表策略:将id为偶数的存入到库1中,奇数存入到库2中,在每个库中,再根据学生的...
    99+
    2023-06-22
  • 使用sharding-jdbc实现水平分库+水平分表的示例代码
    前面的文章使用sharding-jdbc实现水平分表中详细记录了如何使用sharding-jdbc实现水平分表,即根据相应的策略,将一部分数据存入到表1中,一部分数据存入到表2中,...
    99+
    2022-11-12
  • 怎么使用sharding-jdbc实现水平分表
    这篇文章主要介绍“怎么使用sharding-jdbc实现水平分表”,在日常操作中,相信很多人在怎么使用sharding-jdbc实现水平分表问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使用shardin...
    99+
    2023-06-25
  • 使用sharding-jdbc实现水平分表的示例代码
    目录在mysql中新建数据库sharding_db,新增两张结构一样的表student_1和student_2。添加依赖编写配置文件编写实体类编写mapper接口编写测试类执行测试在...
    99+
    2022-11-12
  • springboot怎么配置sharding-jdbc水平分表
    这篇文章主要讲解了“springboot怎么配置sharding-jdbc水平分表”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“springboot怎么配置sharding-jdbc水平分表...
    99+
    2023-06-21
  • springboot实现以代码的方式配置sharding-jdbc水平分表
    目录关于依赖shardingsphere-jdbc-core-spring-boot-startershardingsphere-jdbc-core数据源DataSource原Dat...
    99+
    2022-11-12
  • mysql如何实现水平分表
    mysql如何实现水平分表?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!Mysql表数据一般达到百万级别,查询效率会很低,...
    99+
    2022-10-18
  • Mysql中如何实现水平分表
    本篇文章给大家分享的是有关Mysql中如何实现水平分表,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 1.  &...
    99+
    2022-10-18
  • mysql中怎么实现水平分表和垂直分表
    本篇文章为大家展示了mysql中怎么实现水平分表和垂直分表,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。 什么是数据库分区? 数据库分区是一种物理数据库设计技术...
    99+
    2022-10-18
  • Mysql中怎么实现水平分表与垂直分表
    本篇文章为大家展示了Mysql中怎么实现水平分表与垂直分表,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。水平分表:如上图所示:另外三张表表结构是一样的  ...
    99+
    2022-10-18
  • Mysql实现水平分库的示例代码
    目录前言:讲解:第一种方式的水平分库:mysql水平分库数据查询合并MySQL水平分库插入数据前言: 平时开发中,可能会遇见数据量越来越大的情况,一般数据量过千万级别,就必须考虑分库分表的情况了,来减少io 服务器压力,...
    99+
    2023-06-08
    Mysql 水平分库
  • MySQL如何使用Partition功能实现水平分区
    这篇文章主要为大家展示了“MySQL如何使用Partition功能实现水平分区”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“MySQL如何使用Partition功能实现水平分区”这篇文章吧。1 ...
    99+
    2023-06-21
  • MySQL数据库中怎么实现水平切分
    MySQL数据库中怎么实现水平切分,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。 随着互联网应用的广泛普及,海量数据的存储和...
    99+
    2022-10-18
  • SpringBoot 如何使用sharding jdbc进行分库分表
    目录基于4.0版本,Springboot2.1在pom里确保有如下引用里面我profiles.active了另一个之后手工把表都建好写个测试代码需要注意一个坑基于4.0版本,Spri...
    99+
    2022-11-13
  • mybatis水平分表实现动态表名的项目实例
    目录一、水平分表二、项目实现目录结构三、扩展一、水平分表 当业务需求的数据量过大时,一个表格存储数据会非常之多,故时长采用水平分表的方式来减少每张表的数据量即是提升查询数据库时的效率...
    99+
    2022-11-13
  • 实现数据库水平切分的两个思路
    引言 随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题。对于一个大型的互联网应用,每天几十亿的PV无疑对数据库造成了相当高的负载。对于系统的稳定性和扩展性造成了极大的问题。通过数据切分...
    99+
    2022-10-18
  • python3实现并发访问水平切分表的方法
    这篇文章给大家分享的是有关python3实现并发访问水平切分表的方法的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。场景说明假设有一个mysql表被水平切分,分散到多个host中,...
    99+
    2022-10-18
  • springboot+mybatis拦截器方法实现水平分表操作
    目录1.前言2.MyBatis 允许使用插件来拦截的方法3、Interceptor接口 4分表实现4.1、大体思路4.2.1 Mybatis如何找到我们新增的拦截...
    99+
    2022-11-13
    springboot+mybatis拦截器 springboot+mybatis实现水平分表操作
  • Android 中怎么利用Recyclerview实现水平分页
    Android 中怎么利用Recyclerview实现水平分页,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。解决思路既然打算用Recyclerview实现,很明显这就可以用Gr...
    99+
    2023-05-30
    recyclerview android
  • 如何使用MySQL的分布式架构实现水平扩展?
    如何使用MySQL的分布式架构实现水平扩展?随着互联网应用的高速发展,大量数据的存储和处理成为了系统设计的一个重要问题。在传统的单机MySQL中,随着数据量的增加,单机的存储和处理能力很容易成为瓶颈。为了解决这个问题,我们可以采用MySQL...
    99+
    2023-10-22
    MySQL 分布式架构 水平扩展
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作