当前位置: 首页 > news >正文

【MySQL】分库分表

https://www.bilibili.com/video/BV1Kr4y1i7ru/?p=163​
https://blog.csdn.net/qq_47959003/article/details/126058710

随着互联网及移动互联网的发展,应用系统的数据量也是成指数式增长,若采用单数据库进行数据存储,存在以下性能瓶颈:
1、IO瓶颈:热点数据太多,数据库缓存不足,产生大量磁盘O,效率较低。请求数据太多,带宽不够,网络O瓶颈。
2、CPU瓶颈:排序、分组、连接查询、聚合统计等SQL会耗费大量的CPU资源,请求数太多,CPU出现瓶颈。

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

分库分表

垂直分库:以表为依据,根据业务将不同表拆分到不同库中。
在这里插入图片描述

特点:
1.每个库的表结构都不一样。
2.每个库的数据也不一样。
3.所有库的并集是全量数据。

垂直分表:以字段为依据,根据字段属性将不同字段拆分到不同表中。
在这里插入图片描述

特点:
1.每个表的结构都不一样。
2.每个表的数据也不一样,一般通过一列(主键/外键)关联。
3.所有表的并集是全量数据。

水平分库:以字段为依据,按照一定策略,将一个库的数据拆分到多个库中。
在这里插入图片描述

特点:
1.每个库的表结构都一样。
2.每个库的数据都不一样。
3.所有库的并集是全量数据。

水平分表:以字段为依据,按照一定策略,将一表的数据拆分到多个表中。
在这里插入图片描述

特点:
1.每个表的表结构都一样。
2.每个表的数据都不一样。
3.所有表的并集是全量数据。

实现技术

可以根据主键id不同,访问不同的服务器
在这里插入图片描述

shardingJDBC:基于AOP原理,在应用程序中对本地执行的SQL进行拦截,解析、改写、路由处理。需要自行编码配置实现,只支持java语言,性能较高。
MyCat:数据库分库分表中间件,不用调整代码即可实现分库分表,支持多种语言,性能不及前者。

MyCat

MyCat是开源的、话跃的,基于java语言编写的Mysql数据库中间件。可以像使用mysql一样来使用mycat,对于开发人员来说根本感觉不到mycat的存在。(伪装协议)

http://www.mycat.org.cn/

目录结构:
bin:存放可执行文件,用于启动停止mycat;
conf:存放mycat的配置文件;
lib:存放mycat的项目依赖包;
logs:存放mycat的日志文件

在这里插入图片描述

在这里插入图片描述

mycat中不存放数据,只存放逻辑上的分片和其他一些聚合操作

相关文章:

  • USB - 常用开发工具
  • C++ -- 红黑树的基本操作
  • 从零开始精通Onvif之图片抓拍
  • Mybatis --- 动态SQL 和数据库连接池
  • docker Pulling fs layer 含义
  • DeepSpeed Monitoring Comm. Logging
  • 速盾:什么是高防CDN?有什么优势?
  • 网络安全复习笔记
  • 入门Rabbitmq
  • QT中出现ASSERT failure in QList::at: “index out of range”的情况和解决办法
  • 全面解析AdaBoost:多分类、逻辑回归与混合分类器的实现
  • 基于DPU的云原生裸金属服务快速部署及存储解决方案
  • Jupyter Notebook 中 %run 魔法命令
  • 高级优化理论与方法(十五)
  • 外网怎么访问内网?
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • echarts花样作死的坑
  • Lsb图片隐写
  • webpack4 一点通
  • 关于List、List?、ListObject的区别
  • 聊聊sentinel的DegradeSlot
  • 目录与文件属性:编写ls
  • 前嗅ForeSpider教程:创建模板
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • 用Canvas画一棵二叉树
  • 与 ConTeXt MkIV 官方文档的接驳
  • 06-01 点餐小程序前台界面搭建
  • gunicorn工作原理
  • raise 与 raise ... from 的区别
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • 整理一些计算机基础知识!
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • ​字​节​一​面​
  • #DBA杂记1
  • (3)llvm ir转换过程
  • (4)事件处理——(7)简单事件(Simple events)
  • (a /b)*c的值
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (亲测有效)推荐2024最新的免费漫画软件app,无广告,聚合全网资源!
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (实测可用)(3)Git的使用——RT Thread Stdio添加的软件包,github与gitee冲突造成无法上传文件到gitee
  • (转)大型网站架构演变和知识体系
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .NET Framework 和 .NET Core 在默认情况下垃圾回收(GC)机制的不同(局部变量部分)
  • .net 开发怎么实现前后端分离_前后端分离:分离式开发和一体式发布
  • .net反编译的九款神器
  • .NET关于 跳过SSL中遇到的问题
  • .Net环境下的缓存技术介绍
  • .NET使用存储过程实现对数据库的增删改查
  • .Net通用分页类(存储过程分页版,可以选择页码的显示样式,且有中英选择)