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

在这里插入图片描述

个人简介: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.hqwc.cn/news/219148.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Scope 模块

Scope 模块可以连接任何类型的实数信号线 (不支持复数)。 波形显示界面主要包括两个部分: Scope 独有的工具栏、波形显示区域。 波形显示界面默认是黑色背景, 当有单个信号输入时, 信号线是黄色的。 Scope 模块也有菜单栏, 只不过默认将其句柄和显示都隐藏起来, 可以通过下面…

C3 多媒体查询

文章目录 前言CSS3 多媒体查询CSS2 多媒体类型CSS3 多媒体查询浏览器支持多媒体查询语法CSS3 多媒体类型多媒体查询简单实例 媒体类型媒体功能更多实例后言 前言 hello world欢迎来到前端的新世界 😜当前文章系列专栏:CSS 🐱‍👓博…

队列实现栈VS栈实现队列

目录 【1】用队列实现栈 思路分析 ​ 易错总结 Queue.c&Queue.h手撕队列 声明栈MyStack 创建&初始化栈myStackCreate 压栈myStackPush 出栈&返回栈顶元素myStackPop 返回栈顶元素myStackTop 判断栈空否myStackEmpty 释放空间myStackFree MyStack总代码…

BER编码规则

文章目录 一、BER 编码规则介绍二、BER编码数据组成三、Identifier octets Type1. tag class 分类2. p/c 分类3 tag type4. ASN.1的原始数据类型(TAG) 四、 Length octets1、定长的短格式2、不定长格式3、保留格式 五、Contents octets六 、BER编码番外 …

2024年天津天狮学院专升本食品质量与安全专业《分析化学》考纲

2024年天津天狮学院食品质量与安全专业高职升本入学考试《分析化学》考试大纲 一、考试性质 《分析化学》专业课程考试是天津天狮学院食品质量与安全专业高职升本入学考试 的必考科目之一,其性质是考核学生是否达到了升入本科继续学习的要求而进行的选拔性考试。《…

车载通信架构 —— 传统车内通信网络LIN总线(低成本覆盖低速场景)

车载通信架构 —— 传统车内通信网络LIN总线(低成本覆盖低速场景) 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是…

企业计算机服务器中了mkp勒索病毒怎么办?Mkp勒索病毒解密数据恢复

网络技术的不断发展,为企业的生产运营提供了坚实的基础,但随之而来的网络安全威胁也不断增加,影响了企业的正常生产生活。近期,云天数据恢复中心陆续接到很多企业的求助,企业计算机服务器遭到了mkp勒索病毒攻击&#x…

NeoPreference延伸:为SharedPreferences配置项生成配置页面

代码地址:https://github.com/Nagi1225/NeoPreference.git 最初在开发NeoPreference这个SharedPreferences工具的时候,就期望完成三个目标: 代码简洁,新增配置项的时候一行代码(最多两行);读写…

蓝桥杯第十四届蓝桥杯模拟赛第三期考场应对攻略(C/C++)

这里把我的想法和思路写出来,恳请批评指正! 目录 考前准备 试题1: 试题2: 试题3: 试题4: 试题5: 试题6: 试题7: 试题8: 试题9: 试题1…

python游戏开发pygame初步

文章目录 安装和示例移动物体优化 安装和示例 顾名思义,PyGame就是用来做游戏的Python库,提供了许多游戏开发功能,如图像处理、音频播放、事件处理、碰撞检测等等。从这个角度来说,pygame不仅是一个游戏库,同时也是一…

访谈 破风之人毛京波,选择难而正确的路

“无论是在燃油时代还是电动时代,我们所做的一切,只为回归纯粹的驾驶乐趣。”履新路特斯中国总裁整整一年的毛京波,从不放过任何一个展示路特斯品牌驾驭精神的机会。 11月17日,广州车展开幕首日,位于5.2馆的路特斯“冠…

前端web开发学习笔记

JavaWeb 前端Web开发HTMLCSSjavaScript1.JS引入2.JS基础语法3.JS函数4.JS对象 BOMDOM文档对象模型JS事件监听VueVue常用指令Vue的生命周期 AjaxAxios 前端工程化环境准备NodeJS安装和Vue-cli安装vue项目Vue组件库Element组件的使用 Vue路由Nginx打包部署 前端Web开发 HTML 负…