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

后端进阶-分库分表

文章目录

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

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

为什么需要分库

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

为什么需要分表

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

什么时候需要分库分表

只需要分库

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

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

只需要分表

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

分库分表解决方案

垂直分库

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

水平分库

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

垂直分表

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

水平分表

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

分库分表常用算法

范围算法

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

hash分片

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

查表分片

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

在这里插入图片描述

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

分库分表模式

客户端模式

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

代理模式

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

http://www.lryc.cn/news/366430.html

相关文章:

  • Apple开发者应用商店(AppStore)描述文件及ADHOC描述文件生成
  • 【Git】修改设置 git 的 username、email
  • python脚本打包为exe并在服务器上设置定时执行
  • STM32-呼吸灯仿真
  • 【AI基础】第三步:纯天然保姆喂饭级-安装并运行chatglm2-6b
  • Spring Security系列之Handler
  • Thinkphp使用Elasticsearch查询
  • 开源日志分析平台ELK实战应用
  • css基本操作及使用
  • SpringBoot+Vue幼儿园管理系统(前后端分离)
  • MFC实现子控件focus焦点上下移动父控件ListView和Gridview也跟着向上下移动
  • 几何关系运算处理
  • http和https分别是什么?区别是什么?
  • 第一周:计算机网络概述(上)
  • 谷歌AI搜索变革,中国引擎能跟上步伐?
  • 【机器学习300问】110、什么是Lasso回归模型?
  • Qt实现麦克风音频输入保存wav文件
  • docker_如何推送镜像到仓库(hub.docker.com)
  • 【Python】认识 Python
  • Vue根据后端返回的tabList动态渲染组件信息
  • 二轴机器人大米装箱机:技术创新引领智能包装新潮流
  • rtl8723DU移植 android4.4 4418 (第二部分蓝牙部分)
  • 【Vue】组件的存放目录问题
  • 开发PlugLink插件:自动生成并发布博客文章
  • Ant Design Pro
  • 加密软件好用的是哪个?为什么这么多人说迅软DSE加密软件好用?
  • 大模型日报2024-06-07
  • Day49 动态规划part08
  • React -- memo允许你的组件在 props 没有改变的情况下跳过重新渲染。
  • 路径