分库分表

分库分表的概念

分库分表类

垂直拆分

为什么要分库。

比如下面这个表,是在是太多了,那么就可以进行对表的拆分。

一般垂直拆分,都是根据业务进行拆分。

垂直分库

垂直分表

比如下面的表,用户表中,存有 用户密码 这两项,那么每次登录的时候,都要查询这两项,其他的列查询的比较少,所以这个时候,我们就可以对 数据库 进行垂直拆分。

垂直拆分的特点

  1. 每个库(表)的结构都不一样

  2. 每个数据库(表)的数据(至少有一列)是一样的

  3. 每个库或者表的并集是全部数据

优点:

业务非常清晰,维护起来比较简单。

缺点:

  1. 如果单表的数据量比较大,那么读写的压力依然会很大。
  2. 一个业务可能会影响到数据库的瓶颈。比如双十一,所有的操作都会对订单操作,而很少对注册用户的数据库进行操作。
  3. 如果要查询,可能要使用到 join,提高开发和查询的难度。

水平拆分

水平拆库

  • 可以进行 取模 操作,确定数据应该放到哪个库里?

水平拆表

水平拆表最主要考虑的就是数据库的均衡性,比如两个表的数据,尽量的均衡,不要个表占 80%,另一个占 20%
比如认识统计的一个表,根据用户的性别进行划分,就能达到五五分的目的。

水平拆分的优缺点

水平拆分的特点

  1. 每个库(表)的结构都一样

  2. 每个库(表) 的数据都不一样

  3. 每个数据库(表) 的并集都是全量数据

优点

  1. 单库的数据量在减少,有助于性能的提升。

  2. 提高了系统的稳定性和负载能力。

  3. 拆分表的结构相同,程序改造少。

缺点

  1. 数据库扩容,难度很大。

  2. 拆分规则很难抽象出来。

  3. 部分业务无法关联,只能通过程序的接口去调用

分库的问题

  1. 分库的事务。

  2. 跨库的 Join 查询。

  3. 分布式的全局唯一 ID

  4. 开发成本高,程序员要求高。

posted @ 2021-08-30 11:35  沧海一声笑rush  阅读(58)  评论(0编辑  收藏  举报