分库分表
分库分表的概念
分库分表类
垂直拆分
为什么要分库。
比如下面这个表,是在是太多了,那么就可以进行对表的拆分。
一般垂直拆分,都是根据业务进行拆分。
垂直分库
垂直分表
比如下面的表,用户表中,存有 用户
和 密码
这两项,那么每次登录的时候,都要查询这两项,其他的列查询的比较少,所以这个时候,我们就可以对 数据库
进行垂直拆分。
垂直拆分的特点
-
每个库(表)的结构都不一样
-
每个数据库(表)的数据(至少有一列)是一样的
-
每个库或者表的并集是全部数据
优点:
业务非常清晰,维护起来比较简单。
缺点:
- 如果单表的数据量比较大,那么读写的压力依然会很大。
- 一个业务可能会影响到数据库的瓶颈。比如双十一,所有的操作都会对订单操作,而很少对注册用户的数据库进行操作。
- 如果要查询,可能要使用到
join
,提高开发和查询的难度。
水平拆分
水平拆库
- 可以进行
取模
操作,确定数据应该放到哪个库里?
水平拆表
水平拆表最主要考虑的就是数据库的均衡性,比如两个表的数据,尽量的均衡,不要个表占 80%,另一个占 20%
比如认识统计的一个表,根据用户的性别进行划分,就能达到五五分的目的。
水平拆分的优缺点
水平拆分的特点
-
每个库(表)的结构都一样
-
每个库(表) 的数据都不一样
-
每个数据库(表) 的并集都是全量数据
优点
-
单库的数据量在减少,有助于性能的提升。
-
提高了系统的稳定性和负载能力。
-
拆分表的结构相同,程序改造少。
缺点
-
数据库扩容,难度很大。
-
拆分规则很难抽象出来。
-
部分业务无法关联,只能通过程序的接口去调用
分库的问题
-
分库的事务。
-
跨库的
Join
查询。 -
分布式的全局唯一
ID
。 -
开发成本高,程序员要求高。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
2020-08-30 VS core 编译器入门用法