②⑩① 【MySQL】什么是分库分表?拆分策略有什么?什么是MyCat?

news2024/11/30 14:30:08

在这里插入图片描述

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~
个人主页:.29.的博客
学习社区:进去逛一逛~

在这里插入图片描述

目录

  • ②⑩① 【MySQL】什么是分库分表?拆分策略有什么?
    • 1. 性能瓶颈
    • 2. 拆分策略
      • ⚪ 垂直拆分
      • ⚪ 水平拆分
    • 3. 实现技术
    • 4. MyCat中间件


②⑩① 【MySQL】什么是分库分表?拆分策略有什么?


1. 性能瓶颈

单数据库存在问题

随着互联网及移动互联网的发展,应用系统的数据量也是成指数式增长,若采用单数据库进行数据存储,存在以下性能瓶颈:

  • 1.IO瓶颈:热点数据太多,数据库缓存不足,产生大量磁盘IO,效率较低。请求数据太多,带宽不够,网络IO瓶颈。
  • 2.CPU瓶颈:排序、分组、连接查询、聚合统计等SQL会耗费大量的CPU资源,请求数太多,CPU出现瓶颈。

分库分表的中心思想都是将数据分散存储,使得单一数据库/表的数据量变小来缓解单一数据库的性能问题,从而达到提升数据库性能的目的。




2. 拆分策略

分库分表 的 拆分方式

  • 🚀垂直拆分
    • 垂直分库
    • 垂直分表

  • 🚀水平拆分
    • 水平分库
    • 水平分表

在这里插入图片描述



⚪ 垂直拆分

垂直分库

  • 以表为依据,根据业务将不同表拆分到不同库中去。
    • 特点:
      • ①每个库的表结构都不一样。
      • ②每个库的数据不一样。
      • ③所有库的并集是全量数据。
  • 在这里插入图片描述

垂直分表

  • 以字段为依据,根据字段属性将不同字段拆分到不同表中。
    • 特点:
      • ①每个表的结构都不一样。
      • ②每个表的数据也不一样,一般通过一列(主键/外键)关联。
      • ③所有表的并集是全量数据。
  • 在这里插入图片描述


⚪ 水平拆分

水平分库

  • 以字段为依据,按照一定策略,将一个库的数据拆分到多个库中。
    • 特点:
      • ①每个库的表结构都一样。
      • ②每个库的数据都不一样。
      • ③所有库的并集是全量数据。
  • 在这里插入图片描述

水平分表

  • 以字段为依据,按照一定策略,将一个表中的数据拆分到多个表中去。
    • 特点:
      • ①每个表的表结构都一样。
      • ②每个表的数据都不一样。
      • ③所有表的并集是全量数据。
  • 在这里插入图片描述



3. 实现技术

shardingJDBC

shardingJDBC技术 基于AOP原理,在应用程序中对本地执行的SQL进行拦截,解析、改写、路由处理。需要自行编码配实现,只支持java语言,性能较高。


MyCat

MyCat 是数据库分库分表中间件,不用调整代码即可实现分库分表,支持多种语言,性能不及shardingJDBC技术。




4. MyCat中间件

MyCat

MyCat是一个开源的、活跃的、分布式的数据库中间件 ,可以像使用MySQL一样来使用MyCat,对于开发人员来说根本感觉不到MyCat的存在。MyCat中间件主要用于在大型数据库应用中实现数据库的分片和读写分离。它支持MySQL和MariaDB,并提供了水平分片、垂直分片、分布式事务等功能。以下是MyCat中间件的一些主要特点和功能:

  1. 分片和分布式架构:
    • 水平分片: MyCat支持水平分片,将数据水平划分为多个片段,每个片段可以存在于不同的物理节点上。
    • 垂直分片: 可以通过垂直分片将不同的表划分到不同的物理节点上,以提高查询性能和灵活性。
  2. 读写分离:
    • MyCat支持读写分离,可以配置多个只读节点,将读请求分发到这些节点上,从而提高整体查询性能。
  3. 分布式事务:
    • MyCat支持分布式事务,通过X/Open XA协议实现,确保在跨多个数据库节点的事务中保持一致性。
  4. SQL解析和路由:
    • MyCat能够解析SQL语句并将其路由到相应的分片节点,以确保数据操作被正确地分发到对应的数据库。
  5. 连接池管理:
    • MyCat提供了连接池管理功能,有效地管理数据库连接,降低系统的连接开销。
  6. 支持多租户:
    • MyCat支持多租户架构,使得不同的租户可以共享相同的物理资源,同时保持数据的隔离性。
  7. 动态扩展和缩减:
    • MyCat支持动态扩展和缩减节点,便于根据业务需求进行系统的水平伸缩。
  8. 监控和管理:
    • 提供了丰富的监控和管理工具,可以监测集群的状态、性能指标等,有助于及时发现和解决问题。
  9. 开源社区支持:
    • MyCat是一个开源项目,拥有活跃的社区,用户可以获得开源社区的支持和贡献。

MyCat中间件为大型数据库应用提供了灵活性、可扩展性和高性能,使得应用程序能够更好地应对大规模数据存储和访问的挑战。


MyCat的优势

  • MyCat优势:
    • ①性能可靠稳定。
    • ②强大的技术团队。
    • ③体系完善。
    • ④社区活跃。

MyCat 核心概念

在这里插入图片描述





在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1253422.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

定时器/计数器的应用

前言 对近期学习定时器进行简单的记录 参考链接 LED数码管的静态显示与动态显示(KeilProteus)-CSDN博客 外中断的应用-CSDN博客 【mcuclub】定时器/计数器_定时器/计数器的内部结构和工作方式-CSDN博客 5.图解定时器/计数器 - 知乎 (zhihu.com) 5…

CPU、GPU、TPU内存子系统架构

文章目录 CPU、GPU、TPU内存子系统架构概要CPUGPUTPU共同点和差异: CPU、GPU、TPU内存子系统架构 概要 Memory Subsystem Architecture,图源自TVM CPU CPU(中央处理器)的内存子系统:隐式管理 主内存(…

VMware如何导出和导入镜像OVF虚拟机(以unbuntu为例)

前言:我下载了一个unbuntu的系统镜像,基于这个镜像创建了一个unbuntu的虚拟机,辛辛苦苦配置需要的开发环境,如:安装了mysql,安装了jdk等,此时,我的同事可能需要也是同一套类似环境&a…

视觉CV-AIGC一周最新技术精选(2023-11)

PG-Video-LLaVA: Pixel Grounding Large Video-Language Models https://github.com/mbzuai-oryx/Video-LLaVA将基于图像的大型多模态模型(LMM)扩展到视频领域是具有挑战性的。最近将基于图像的LMM扩展到视频的方法要么缺乏grounding定位能力&#xff08…

SQL sever2008中的游标

目录 一、游标概述 二、游标的实现 三、优缺点 3.1优点: 3.2缺点: 四、游标类型 4.1静态游标 4.2动态游标 4.3只进游标 4.4键集驱动游标 4.5显示游标: 4.6隐式游标 五、游标基本操作 5.1声明游标 5.1.1.IS0标准语法 5.1.1.1语…

nodejs+vue+python+PHP+微信小程序-书吧租阅管理系统的设计与实现-安卓-计算机毕业设计

在当今高度发达的信息中,信息管理改革已成为一种更加广泛和全面的趋势。为确保中国经济的持续发展,信息时代日益更新,书吧租阅管理系统仍在蓬勃发展。同时,随着信息社会的快速发展,各种管理系统面临着越来越多的数据需…

leetcode刷题日志-15.三数之和

这道题还是有点难度,我能想到的就是三重循环,但是题目限制不能重复,所以这道题三重循环完还要去重,太过于麻烦。看了题解以后,大佬们还是厉害,大概思路是这样子的:先对数组进行排序,…

pandas根据列正逆序排序

题目:根据 buy_quantity 列进行排名,相同值分配相同的最低排名。 import pandas as pd# 创建一个示例 DataFrame data {item_id: [1, 2, 3, 4, 5, 6, 7], buy_quantity: [1, 2, 2, 3, 3, 4, 5]} df pd.DataFrame(data)# 使用 rank() 函数为 buy_quant…

电商数据|淘宝商品数据接口接入|参数|获取商品订单物流|电商数据分析

授权认证 授权不是开放平台对服务商应用的授权 ,而是需要开放平台的客户(用户)对服务商应用的授予,比如ERP应用,也就是淘宝的店铺商家对应用进行授权,使其能够拉取到店铺的订单来完成订单履约。 淘宝授权页…

C++ day39 动态规划 不同路径 不同路径Ⅱ

题目1:62 不同路径 题目链接 :不同路径 对题目的理解 机器人位于m*n的网格中的左上角start,求解走到网格右下角finish的移动路径 动规五部曲 1)dp数组的含义以及下标i的含义 dp[i][j]:从start(0,0&…

继承性和多态性实验

继承性和多态性实验 一、实验题目二、实验目的三、实验内容与实现1:【实验内容】2:【实验实现】雇员类(Employee)的实现,如下图所示:2:经理类(Manager)的实现,如下图所示…

Feast:概念

实体 实体是语义相关特征的集合。用户定义实体以映射其用例的领域。 例如,打车车服务可以将客户和司机作为实体,这些实体将相关特征分组,对应于这些客户和司机。 driver Entity(namedriver, join_keys[driver_id]) # 司机实体 customer E…

⑨【Stream】Redis流是什么?怎么用?: Stream [使用手册]

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ ⑨Redis Stream基本操作命令汇总 一、Redis流 …

系列十六、Spring IOC容器的扩展点

一、概述 Spring IOC容器的扩展点是指在IOC加载的过程中,如何对即将要创建的bean进行扩展。 二、扩展点 2.1、BeanDefinitionRegistryPostProcessor 2.1.1、概述 BeanDefinitionRegistryPostProcessor是bean定义的后置处理器,在BeanDefinition加载后&a…

HarmonyOS应用开发者高级认证【题库答案】

HarmonyOS应用开发者基础认证【题库答案】 一、判断题 云函数打包完成后,需要到AppGallery Connect创建对应函数的触发器才可以在端侧中调用(错)在column和Row容器组件中,aligntems用于设置子组件在主轴方向上的对齐格式&#xf…

BUUCTF [HBNIS2018]低个头 1

BUUCTF:https://buuoj.cn/challenges 题目描述: 得到的 flag 请包上 flag{} 提交。来源: https://github.com/hebtuerror404/CTF_competition_warehouse_2018 密文: 下载附件,得到一个.txt文件。 解题思路: 1、低头…

数字图像处理-Matlab实验

实验一 图像增强 实验内容: 对于给定的低对比度测试图像,利用灰度图像直方图均衡化算法进行图像视觉效果增强。 对于给定的低照度彩色测试图像,结合颜色空间转换和灰度图像直方图均衡化算法进行图像视觉效果增强。 实验数据: Test1_1.jpg: Test1_2.jpg: 实验步骤: %% …

基于ncurse实现的俄罗斯方块

1. 需求分析 方块的类型方块的变形方块的消除方块的存储方块的移动接受用户的输入 2. 概要设计 2.1 方块类型与变形 一共有七种,变换的方式如下。变换后的任意形状方块实际上可以存在一个4x4的矩阵中。 我们再压一下位,就可以存在16位中。 2.2 方块…

python之静态服务器程序开发

文章目录 Python静态Web服务器开发Web静态服务器初识搭建Python自带的静态Web服务器静态Web服务器返回固定页面数据静态Web服务器返回指定页面数据静态Web服务器多任务版静态Web服务器面向对象开发静态Web服务器命令行启动动态绑定端口号 Python静态Web服务器开发 Web静态服务…

求集合的笛卡尔乘积

求集合的笛卡尔乘积 一:【实验目的】二:【实验内容】三:【实验原理】四:代码实现: 一:【实验目的】 通过编实现给定集合A和B的笛卡尔积CAA,DAB,EBA,FAAB,GA(A*B). 二:【实验内容】…