手把手带你用数据库中间件Mycat+SpringBoot完成分库分表

springboot整合mycat 该文件为全局自增主键配置对于table定义了autoIncrement=“true” primaryKey="id"的表,需要配置全局自增序号(注意全大写)。,类型为String,值格式为dataId-分表ID,dataId用于分组ID计算,为数据量提供扩展性;实现calculateRange范围分片DN计算方法(参数是burst值)在类中定义volume、step、mod三个变量,并提供set方法。实现calculate 等值分片DN计算方法(参数是burst值)Volume是每组分片的数据容量。 阅读详情
  • 作者:叩丁狼教育 蓝雄威

  • https://www.jianshu.com/p/f81422b1c915

一、背景

随着时间和业务的发展,数据库中的数据量增长是不可控的,库和表中的数据会越来越大,随之带来的是更高的磁盘、IO、系统开销,甚至性能上的瓶颈,而一台服务的资源终究是有限的,因此需要对数据库和表进行拆分,从而更好的提供数据服务。

当用户表达到千万级别,在做很多操作的时候都会很吃力,所以当数据增长到 1000 万以上就需要分库分表来缓解单库(表)的压力。

二、什么是分库分表 [1]

简单来说,就是指通过某种特定的条件,将我们存放在同一个数据库中的数据分散存放到多个数据库(主机)上面,以达到分散单台设备负载的效果。

数据的切分(Sharding)根据其切分规则的类型,可以分为两种切分模式。一种是按照不同的表(或者 Schema)来切分到不同的数据库(主机)之上,这种切可以称之为数据的垂直(纵向)切分;另外一种则是根据表中的数据的逻辑关系,将同一个表中的数据按照某种条件拆分到多台数据库(主机)上面,这种切分称之为数
据的水平(横向)切分。

垂直切分的最大特点就是规则简单,实施也更为方便,尤其适合各业务之间的耦合度非常低,相互影响很小,业务逻辑非常清晰的系统。在这种系统中,可以很容易做到将不同业务模块所使用的表分拆到不同的数据库中。根据不同的表来进行拆分,对应用程序的影响也更小,拆分规则也会比较简单清晰。

水平切分于垂直切分相比,相对来说稍微复杂一些。因为要将同一个表中的不同数据拆分到不同的数据库中,对于应用程序来说,拆分规则本身就较根据表名来拆分更为复杂,后期的数据维护也会更为复杂一些。

三、垂直切分

个数据库由很多表的构成,每个表对应着不同的业务,垂直切分是指按照业务将表进行分类,分布到不同
的数据库上面,这样也就将数据或者说压力分担到不同的库上面,如下图:

系统被切分成了,用户,订单交易,支付几个模块。
一个架构设计较好的应用系统,其总体功能肯定是由很多个功能模块所组成的,而每一个功能模块所需要的数据对应到数据库中就是一个或者多个表。而在架构设计中,各个功能模块相互之间的交互点越统一越少,系统的耦合度就越低,系统各个模块的维护性以及扩展性也就越好。这样的系统,实现数据的垂直切分也就越容易。

但是往往系统之有些表难以做到完全的独立,存在这扩库 join 的情况,对于这类的表,就需要去做平衡,是数据库让步业务,共用一个数据源,还是分成多个库,业务之间通过接口来做调用。在系统初期,数据量比较少,或者资源有限的情况下,会选择共用数据源,但是当数据发展到了一定的规模,负载很大的情况,就需
要必须去做分割。

一般来讲业务存在着复杂 join 的场景是难以切分的,往往业务独立的易于切分。如何切分,切分到何种
程度是考验技术架构的一个难题。
下面来分析下垂直切分的优缺点:

优点:

拆分后业务清晰,拆分规则明确;

系统之间整合或扩展容易;

数据维护简单。

缺点:

部分业务表无法 join,只能通过接口方式解决,提高了系统复杂度;

受每种业务不同的限制存在单库性能瓶颈,不易数据扩展跟性能提高;

事务处理复杂。

由于垂直切分是按照业务的分类将表分散到不同的库,所以有些业务表会过于庞大,存在单库读写与存储瓶颈,所以就需要水平拆分来做解决。

四、水平切分 [1]

相对于垂直拆分,水平拆分不是将表做分类,而是按照某个字段的某种规则来分散到多个库之中,每个表中包含一部分数据。简单来说,我们可以将数据的水平切分理解为是按照数据行的切分,就是将表中的某些行切分到一个数据库,而另外的某些行又切分到其他的数据库中,如图

拆分数据就需要定义分片规则。关系型数据库是行列的二维模型,拆分的第一原则是找到拆分维度。比如:
从会员的角度来分析,商户订单交易类系统中查询会员某天某月某个订单,那么就需要按照会员结合日期来拆分,不同的数据按照会员 ID 做分组,这样所有的数据查询 join 都会在单库内解决;如果从商户的角度来讲,要查询某个商家某天所有的订单数,就需要按照商户 ID 做拆分;但是如果系统既想按会员拆分,又想按商家数据,则会有一定的困难。如何找到合适的分片规则需要综合考虑衡。
几种典型的分片规则包括:

按照用户 ID 求模,将数据分散到不同的数据库,具有相同数据用户的数据都被分散到一个库中;

按照日期,将不同月甚至日的数据分散到不同的库中;

按照某个特定的字段求摸,或者根据特定范围段分散到不同的库中。

如图,切分原则都是根据业务找到适合的切分规则分散到不同的库,下面用用户 ID 求模举

既然数据做了拆分有优点也就优缺点。
优点:

拆分规则抽象好,join 操作基本可以数据库做;

不存在单库大数据,高并发的性能瓶颈;

应用端改造较少;

提高了系统的稳定性跟负载能力。

缺点:

拆分规则难以抽象;

分片事务一致性难以解决;

数据多次扩展难度跟维护量极大;

跨库 join 性能较差

五、什么是 Mycat

它是一个开源的分布式数据库系统,是一个实现了 MySQL 协议的的
Server,前端用户可以把它看作是一个数据库代理,用 MySQL 客户端工具和命令行访问,而其后端可以用 MySQL 原生(Native)协议与多个 MySQL 服务器通信,也可以用 JDBC 协议与大多数主流数据库服务器通信,其核心功能是分表分库,即将一个大表水平分割为 N 个小表,存储在后端 MySQL 服务器里或者其他数据库里。

常见应用场景:

单纯的读写分离,此时配置最为简单,支持读写分离,主从切换;

分表分库,对于超过 1000 万的表进行分片,最大支持 1000 亿的单表分片;

多租户应用,每个应用一个库,但应用程序只连接 Mycat,从而不改造程序本身,实现多租户化;

报表系统,借助于 Mycat 的分表能力,处理大规模报表的统计; 替代 Hbase,分析大数据;

作为海量数据实时查询的一种简单有效方案,比如 100 亿条频繁查询的记录需要在 3 秒内查询出来结果,除了基于主键的查询,还可能存在范围查询或其他属性查询,此时 Mycat 可能是最简单有效的选

六、SpringBoot+Mycat+MySQL 实现分表分库案例

关于分库分表,Mycat 已经帮我们在内部实现了路由的功能,我们只需要在 Mycat 中配置以下切分规则即可,对于开发者来说,我们就可以把 Mycat 看做是一个数据库,接下来我们开始搭建环境:

步骤一:

Mycat 是使用 java 写的数据库中间件,所以要运行 Mycat 前要准备要 jdk 的环境,要求是 jdk1.7 以上的环境。所以需要在系统中配置 JAVA_HOME 的环境变量.

步骤二:

从官网下载 Mycat,http://dl.mycat.io/1.6-RELEASE / 我们是基于 CentOS7 来搭建 Mycat 环境的,所以下载版本:
Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz

步骤三:

将下载好的安装包上传到服务器上并解压. 解压之后目录结构如下:

步骤四:

配置切分规则:
将如下配置复制粘贴覆盖 mycat/conf/schema.xml 的内容。

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
   <schema >
           <table  />  
   </schema>
   
   <!-- 设置dataNode 对应的数据库,及 mycat 连接的地址dataHost -->  
   <dataNode  />  
   <dataNode  />  
   
   <!-- mycat 逻辑主机dataHost对应的物理主机.其中也设置对应的mysql登陆信息 -->  
   <dataHost >  
           <heartbeat>select user()</heartbeat>  
           <writeHost host="server1" url="127.0.0.1:3306" user="root" password="WolfCode_2017"/>  
   </dataHost>
</mycat:schema>

<schema>: 表示的是在 mycat 中的逻辑库配置,逻辑库名称为: TESTDB

<table>: 表示在 mycat 中的逻辑表配置,逻辑表名称为: user, 映射到两个数据库节点 dataNode中, 切分规则为: rule1(在 rule.xml 配置)

<dataNode>: 表示数据库节点, 这个节点不一定是单节点,可以配置成读写分离.

<dataHost>: 真实的数据库的地址配置

<heartbeat>: 用户心跳检测

<writeHost>: 写库的配置

将如下配置复制粘贴覆盖 mycat/conf/rule.xml的内容。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:rule SYSTEM "rule.dtd">
<mycat:rule xmlns:mycat="http://io.mycat/">
   <tableRule >
       <rule>
           <columns>id</columns>
           <algorithm>mod-long</algorithm>
       </rule>
   </tableRule>
   <function >
       <!-- how many data nodes -->
       <property >2</property>
   </function>
</mycat:rule>

这里定义的是切分规则,是按照 id列进行切分,切分规则是采取取模的方式,
<property>2</property>: 这里配置了我们有拆分了多个库 (表),需要和前面配置
<table/>
中的 dataNode 个数一致,否则会出错.

步骤五:

在数据库中创建两个数据库 db01,db02.
每个库中执行如下建表语句:

CREATE TABLE `user` (
 `id` bigint(20) NOT NULL,
 `name` varchar(255) DEFAULT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
步骤六:

启动 mycat, 执行 mycat/bin/startup_nowrap.sh

步骤七:

项目已经上传到 github
https://github.com/javalanxiongwei/springboot-mycat
搭建 SpringBoot 环境,执行插入语句.
application.properties配置如下:

#配置数据源
spring.datasource.druid.driver-class-name=com.mysql.jdbc.Driver
#这里配置的是Mycat中server.xml中配置账号密码,不是数据库的密码。
spring.datasource.druid.username=root
spring.datasource.druid.password=123456
#mycat的逻辑库 端口也是mycat的
spring.datasource.druid.url=jdbc:mysql://192.168.142.129:8066/TESTDB

UserMapper.java代码如下:

@Mapper
public interface UserMapper {
   @Insert("insert into user(id,name) value (#{id},#{name})")
   int insert(User user);
   @Select("select * from user")
   List<User> selectAll();
}

UserController.java代码如下:

@RestController
@RequestMapping("/user")
public class UserController {
   @Autowired
   private UserMapper userMapper;
   @RequestMapping("/save")
   public String save(User user){
       userMapper.insert(user);
       return "保存成功";
   }
   @RequestMapping("/list")
   public List<User> list(){
       return userMapper.selectAll();
   }
}
步骤八:

测试:
在地址栏输入: http://localhost:8080/user/save?id=1&name=tom
http://localhost:8080/user/save?id=2&name=jack
查看数据库发现:
id 为 1 的数据插入到数据库 db02 中的 user 表。
id 为 2 的数据插入到数据库 db01 中的 user 表。
在地址栏输入:
http://localhost:8080/user/list
是可以看到刚刚插入的两条记录.

好到这一步我们就已经完成了分表分库了.

(完)

【推荐阅读】

高并发场景下限流,常见的限流算法、方案解析!

一套基础自动化部署搭建过程

一份完整的阿里云 Redis 开发规范,值得收藏!



好文!必须点赞
STM32定时器ARR寄存器详解:从‘水桶接水’到精准测速,你的PWM和编码器都靠它 本文深入解析STM32定时器ARR寄存器的核心原理与应用技巧,从PWM波形生成到编码器测速实战。通过水桶模型和硬件本质的比喻,揭示ARR如何作为定时器的'心跳节拍器',并详细探讨其在动态调频、死区时间配置和高精度PWM中的关键作用。特别针对编码器模式下的ARR配置和溢出补偿算法进行优化建议,帮助工程师提升系统性能和实时性。 阅读详情

相关推荐

《探秘 BME680温度湿度气压气体传感器模块:环境感知的卓越之选》:此文为AI自动生成

BME680 是一款由博世公司推出的集成环境传感器模块,在环境监测和物联网等领域中发挥着重要作用。它能够同时测量温度、湿度、气压和气体浓度等多个环境参数,为各种应用提供准确可靠的环境数据。该模块采用小巧的封装形式,便于集成到各种设备中,无论是智能家居、可穿戴设备还是工业监测系统,都能轻松适配。例如,在智能家居系统中,BME680 模块可以监测室内环境参数,如温度、湿度、气压和空气质量等。通过与智能家居控制器或智能手机应用程序的连接,用户可以实时了解室内环境状况,并根据需要进行调整。

zheng_ruiguo的专栏 1873

数据库中间件Mycat+SpringBoot完成分库分表

1.背景 随着时间和业务的发展,数据库中的数据量增长是不可控的,库和表中的数据会越来越大,随之带来的是更高的磁盘、IO、系统开销,甚至性能上的瓶颈,而一台服务的资源终究是有限的,因此需要对数据库和表进行拆分,从而更好的提供数据服务。 当用户表达到千万级别,在做很多操作的时候都会很吃力,所以当数据增长到1000万以上就需要分库分表来缓解单库(表)的压力。 2.什么是分库分表 简单来说,就是指...

延陵缥缈的博客 1514

别再死记硬背了!用Amesim HCD库亲手搭建单向阀、锥阀、球阀模型(附详细参数设置)

本文详细介绍了如何使用Amesim HCD库从零构建单向阀、锥阀和球阀的仿真模型,帮助工程师摆脱死记硬背,掌握物理建模的核心技巧。通过实战案例和参数设置指南,读者将学会如何优化阀门动态响应、验证流量特性以及处理旋转运动等独特挑战,提升液压系统设计效率。

weixin_29248611的博客 501

SpringBoot集成MyCat实现分库分表

Mycat 它是一个开源的分布式数据库系统,是一个实现了 MySQL 协议的Server,前端用户可以把它看作是一个数据库代理,用 MySQL 客户端工具和命令行访问,而其后端可以用 MySQL 原生(Native)协议与多个 MySQL 服务器通信,也可以用 JDBC 协议与大多数主流数据库服务器通信,其核心功能是分表分库,即将一个大表水平分割为 N 个小表,存储在后端 MySQL 服务器里或者其他数据库里。 Mycat关键特性 支持SQL92标准 支持MySQL、Oracle、DB2、SQL Serv

CodersCoder的博客 2300

Orcad 17.2导出PDF原理图终极指南:从Ghostscript安装到带属性书签配置

本文是Orcad 17.2导出高质量PDF原理图的终极指南。针对导出过程中常见的Ghostscript安装报错、软件卡死及版本兼容性问题,提供了详细的解决方案。重点推荐使用Ghostscript 9.53.3版本以确保最佳兼容性,并深入讲解了从安装配置、内存优化到高级书签属性设置的完整流程,帮助硬件工程师稳定、高效地生成带完整器件属性和导航书签的PDF文档。

weixin_29281915的博客 398

GT-Power柴油机瞬态性能仿真与优化——基于EGR-VGT耦合控制策略【附案例】

本文探讨了GT-Power在柴油机瞬态性能仿真与优化中的应用,重点分析了EGR-VGT耦合控制策略的实际效果。通过案例研究展示了如何通过仿真优化提升柴油机的动力响应速度和排放性能,为车辆工程领域的工程师提供了实用的技术参考。

green的博客 763

Springboot 使用MyCat实现MySQL分库分表

mycat.rule 配置分片规则,这里将 user 表按照 id 字段进行分库分表,使用 CRC32 算法。Mycat是一个开源的MySQL数据库分布式集群中间件,它可以将一台MySQL数据库分成多个MySQL数据库,并且支持水平和垂直分表。需要注意的是,使用 Mycat 分库分表后,所有操作都将由 Mycat 中转,并发性能会受到影响。MySQL分库分表是将大型数据库按照一定的规则进行分割成多个小型的数据库或者表,以达到减轻单个数据库或表的压力的目的,提高系统的性能和可扩展性。

Java老兵的后端进阶与AI前沿探索之路。 1346

利用ENVI处理TIF文件,把多个tif整合到一个完整的tif,例如2003-2011年的tif整合到一个tif上。

利用ENVI处理TIF文件,把多个tif整合到一个完整的tif,例如2003-2011年的tif整合到一个tif上。

unique_sir的博客 1万+

SpringBoot 2 种方式快速实现分库分表,轻松拿捏!

是一款开源的分布式关系型数据库中间件,为Apache的顶级项目。其前身是和的两个独立项目,后来在 2018 年合并成了一个项目,并正式更名为 ShardingSphere。其中 sharding-jdbc 为整个生态中最为经典和成熟的框架,最早接触分库分表的人应该都知道它,是学习分库分表的最佳入门工具。

竹林幽深 4070

n8n实战:动态报表生成与企业微信自动化推送

本文详细介绍了如何利用n8n实现动态报表生成与企业微信自动化推送的全流程。通过配置n8n Form触发器、智能报表生成核心逻辑以及企业微信Webhook推送,帮助企业大幅提升数据收集与报表推送效率,实现从数据录入到报表推送的全自动化处理。

weixin_29267307的博客 306

S32K1XX Autosar开发实战|全网独家复现EB MCAL Port/Dio配置、详解引脚分层原理、实现经典跑马灯助力车载IO电控落地

在NXP S32K1XX系列车规MCU的AUTOSAR标准开发体系中,MCAL(微控制器抽象层)是软硬件解耦的核心载体,而Port端口模块与Dio数字IO模块是MCAL最基础、最核心的入门模块,也是车载指示灯、按键检测、继电器驱动、外设硬件启停控制的底层支撑。区别于传统裸机直接操作寄存器的开发方式,AUTOSAR架构采用分层隔离设计,Port负责硬件静态初始化、Dio负责动态电平操控,严格遵循车规级开发规范,杜绝硬件资源冲突、引脚配置混乱等问题。

getusushu的博客 44

Spring Boot 分库分表入门

1. 概述2. 分库分表mybatis 配置内容3. 读写分离666. 彩蛋因为市面上已经非常不错的分库分表的资料,所以艿艿就不在尴尬的瞎哔哔一些内容。推荐阅读两个资料:《Apache ShardingSphere 官方文档》《为什么几乎所有的开源数据库中间件都是国内公司开源的?并且几乎都停止了更新?》目前,国内使用比较多的分库分表的中间件,主要有:Apache ShardingSphereMycat个人比较推荐使用 ShardingSphere ,主要有几个原因:在京东、当当等大型互联网公司落地使用,并且

u012154840的博客 6920

YOLOv11【第三章:高阶应用与落地篇·第7节】多任务联合训练(Multi-Task Learning):检测+分割+关键点三头并进!

🏆 本文收录于专栏 《YOLOv11实战:从入门到深度优化》。本专栏围绕 YOLOv11 的改进、训练、部署与工程优化 展开,系统梳理并复现当前主流的 YOLOv11 实战案例与优化方案,内容目前已覆盖 分类、检测、分割、追踪、关键点、OBB 检测 等多个方向。

**My Coding Family** 731

手把手带你用数据库中间件Mycat+SpringBoot完成分库分表

一、背景 随着时间和业务的发展,数据库中的数据量增长是不可控的,库和表中的数据会越来越大,随之带来的是更高的磁盘、IO、系统开销,甚至性能上的瓶颈,而一台服务的资源终究是有限的,因此需要对数据库和表进行拆分,从而更好的提供数据服务。 当用户表达到千万级别,在做很多操作的时候都会很吃力,所以当数据增长到1000万以上就需要分库分表来缓解单库(表)的压力。 二、什么是分库分表[1] 简单来说,就是指通...

程序员干货站 344

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

centos7上mycat安装_手把手带你用数据库中间件Mycat+SpringBoot完成分库分表

Cat哥领读:挺详细的入门资料,手把手教学!作者:叩丁狼教育 蓝雄威https://www.jianshu.com/p/f81422b1c915一、背景随着时间和业务的发展,数据库中的数据量增长是不可控的,库和表中的数据会越来越大,随之带来的是更高的磁盘、IO、系统开销,甚至性能上的瓶颈,而一台服务的资源终究是有限的,因此需要对数据库和表进行拆分,从而更好的提供数据服务。当用户表达到千万...

weixin_39779032的博客 87

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

保姆级教程!手把手带你用数据库中间件Mycat+SpringBoot完成分库分表

一、背景 随着时间和业务的发展,数据库中的数据量增长是不可控的,库和表中的数据会越来越大,随之带来的是更高的磁盘、IO、系统开销,甚至性能上的瓶颈,而一台服务的资源终究是有限的,因此需要对数据库和表进行拆分,从而更好的提供数据服务。 当用户表达到千万级别,在做很多操作的时候都会很吃力,所以当数据增长到 1000 万以上就需要分库分表来缓解单库(表)的压力。 二、什么是分库分表 简单来说,就是指通过某种特定的条件,将我们存放在同一个数据库中的数据分散存放到多个数据库(主机)上面,以达到分散单台设备负载

weixin_51954021的博客 326

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

xml存储数据 优缺点_手把手带你用数据库中间件Mycat+SpringBoot完成分库分表

作者:叩丁狼教育 蓝雄威链接:https://www.jianshu.com/p/f81422b1c915一、背景随着时间和业务的发展,数据库中的数据量增长是不可控的,库和表中的数据会越来越大,随之带来的是更高的磁盘、IO、系统开销,甚至性能上的瓶颈,而一台服务的资源终究是有限的,因此需要对数据库和表进行拆分,从而更好的提供数据服务。当用户表达到千万级别,在做很多操作的时候都会很吃力,所以当数据增...

weixin_39723899的博客 301

SpringBoot-数据库中间件 Mycat完成分库分表

一、背景 随着时间和业务的发展,数据库中的数据量增长是不可控的,库和表中的数据会越来越大,随之带来的是更高的磁盘、IO、系统开销,甚至性能上的瓶颈,而一台服务的资源终究是有限的,因此需要对数据库和表进行拆分,从而更好的提供数据服务。 当用户表达到千万级别,在做很多操作的时候都会很吃力,所以当数据增长到 1000 万以上就需要分库分表来缓解单库(表)的压力。 二、什么是分库分表 [1] 简单来说,就是指通过某种特定的条件,将我们存放在同一个数据库中的数据分散存放到多个数据库(主机)上面,以达到分散单台设备负载

嘻哈熊的专栏 4428

springboot整合mysql+mycat中间件实现一主两从读写分离和分库分表

引言 读写分离要做的事情就是对于一条SQL该选择哪个数据库去执行,至于谁来做选择数据库这件事儿,无非两个,要么中间件帮我们做,要么程序自己做。因此,一般来讲,读写分离有两种实现方式。 第一种是依靠中间件(比如:MyCat),也就是说应用程序连接到中间件,中间件帮我们做SQL分离; 第二种是应用程序自己去做分离上一篇:springboot+mybatis+mybatis +mysql读写分离(AOP...

xudong的博客 9616

怎么用数据库中间件Mycat+SpringBoot完成分库分表?

一、背景 随着时间和业务的发展,数据库中的数据量增长是不可控的,库和表中的数据会越来越大,随之带来的是更高的磁盘、IO、系统开销,甚至性能上的瓶颈,而一台服务的资源终究是有限的,因此需要对数据库和表进行拆分,从而更好的提供数据服务。 当用户表达到千万级别,在做很多操作的时候都会很吃力,所以当数据增长到1000万以上就需要分库分表来缓解单库(表)的压力。 二、什么是分库分表 简单来说,就是指通过某种...

qianlia的博客 822

Mycat+SpringBoot完成分库分表

mycat下载 官网下载 conf下的schema.xml的配置 :表示的是在mycat中的逻辑库配置,逻辑库名称为:TESTDB :表示在mycat中的逻辑表配置,逻辑表名称为:user,映射到两个数据库节点dataNode中,切分规则为:rule1(在rule.xml配置) :表示数据库节点,这个节点不一定是单节点,可以配置成读写分离. :真实的数据库的地址配置 :用户心跳检测 :写库的配置 ...

小布1994的博客 826

数据库读写分离、分库分表——mycat与shardingjdbc

文章目录一、数据切分1、垂直切分2、水平切分3、分库分表的两种模式二、使用MyCat分库分表1、系统环境2、mysql安装(1)下载mysql的yum引导(2)将文件上传到linux系统上(3)安装mysql(4)启动mysql(5)查询登录的默认密码(6)登录mysql(7)修改默认密码(8)创建用户并授权3、mycat安装(1)下载地址(2)将文件上传到linux系统上(3)解压压缩包(4)修...

敲代码的旺财的博客 2828
上一篇: 大厂面试后,发现自己落伍了!
下一篇: Spring MVC+Spring+MyBatis实现支付宝扫码支付功能(图文详解)
Java思维导图
博客等级 码龄10年 306粉丝 71原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值