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

后端进阶-分库分表

文章目录

      • 为什么需要分库
      • 为什么需要分表
    • 什么时候需要分库分表
      • 只需要分库
      • 只需要分表
    • 分库分表解决方案
      • 垂直分库
      • 水平分库
      • 垂直分表
      • 水平分表
    • 分库分表常用算法
      • 范围算法
      • hash分片
      • 查表分片
    • 分库分表模式
      • 客户端模式
      • 代理模式

今天跟着训练营学习了分库分表,整理了学习笔记。
在这里插入图片描述

为什么需要分库

单机的数据库连接数是有限的,在高并发的场景下同时操作一个数据库容易将连接耗尽,使后序的数据库访问无法正常进行。
同时也是容量问题,单机容量毕竟使有限的,当存储量不断增加,数据库的容量无法全部承载。用多个库在存储,增加数据库的实列。

为什么需要分表

当一张表的数据库很大的时候,查询会变得很慢,虽然底层基于b+树速度还是很快的。分表可以减少每个表中的数据量,提高查询的效率。
提升写入性能,分表分散写入压力。
减轻锁的竞争,大表容易出现锁的竞争,导致性能下降。

什么时候需要分库分表

只需要分库

连接数不够需要进行分库。

微服务场景业务拆分,进行微服务拆分的时候根据业务边界,将各个业务的数据从数据库中拆分出来。
比如电商微服务系统,将订单、物流、商品、会员等分别存储到独立数据库中。

只需要分表

数据量太大了,单表超过了500万行或者单表数据量超过了2GB,就推荐分表了。单表数据库多,并发量不高,查询和存储性能遇到了瓶颈。

分库分表解决方案

垂直分库

专库专用,根据不同的业务将数据放在不同的数据库中去。

水平分库

将单表数据库切分到多个数据库服务器上去,每个库结构一样。来实现水平拓展。

垂直分表

垂直分表使对业务中字段较多的大表进行的一种优化策略,比如用户表分为两个,一个是用户的基本信息,还有一个是用户的详细信息。拆分后的小标只包含部分字段,两个表之间通过主键和外键关联。在这里插入图片描述

水平分表

将一个表数据分到多个表中去。

分库分表常用算法

范围算法

根据时间、地点等信息,进行分库分表。
在这里插入图片描述

hash分片

在这里插入图片描述
在这里插入图片描述

查表分片

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

分库分表模式

客户端模式

小公司使用
在这里插入图片描述在这里插入图片描述

代理模式

在这里插入图片描述
在这里插入图片描述

相关文章:

  • 使用 Apache Commons Exec 自动化脚本执行实现 MySQL 数据库备份
  • javascript导入excel文件
  • 如何搭建一台永久运行的个人服务器?
  • 模型训练——使用预训练权重、冻结训练
  • Dante Cloud 是国内首个支持阻塞式和响应式融合的微服务
  • 设计模式之访问者模式
  • Apache安装教程
  • ArcGIS中几个好用的空间分析工具
  • 【ARM64 常见汇编指令学习 19.3 -- ARMv8 三目运算指令 csel 详细介绍】
  • C++STL---stack queue模拟实现
  • 微信小程序实现图片转base64
  • idea中使用maven-helper插件阅读排查【经典版】2
  • Alsa UCM
  • git【工具软件】分布式版本控制工具软件
  • 链表的回文结构OJ
  • CSS实现一个雨滴滑落效果
  • 【第二节】C/C++数据结构之线性表
  • 【linux】自定义快捷命令/脚本
  • 【机器学习】训练GNN图神经网络模型进行节点分类
  • WindowManager相关容器类
  • 禅定佛的微笑,从樊锦诗提到过的那尊说起
  • 央广网评政府食堂打开大门:小城文旅爆火的底层密码就是真诚
  • 陈燮阳从艺60周年:指挥棒不停,心跳就不会老去
  • 贵州赤水丹霞大瀑布附近山体塌方车辆被埋,景区:无伤亡,道路已恢复
  • 印巴局势紧张或爆发军事冲突,印度空军能“一雪前耻”吗?
  • 思政课也精彩,“少年修齐讲堂”开讲《我的中国“芯”》