【关系型数据库】垂直拆分

阅读更多

垂直拆分是数据拆分方式中比较简单的方式(相对于水平拆分而言)。

注意:垂直拆分后单表数据量未变,依然很大(需要 水平拆分)

 

垂直拆分有 分库 和 分表 两种方式。

 

垂直分库

垂直分库就是根据数据表的相关性将数据表拆分到不同的数据库中。
如,某个系统中,最初是将 用户数据表 和 订单数据表 放在同一个数据库中。

我们可以将 用户数据表 放入 用户库,订单数据表 放入 订单库

 

优点:不同业务由不同数据库提供支持,可降低单个数据库的压力。

缺点

  • 上层业务需额外处理不同的数据源
  • 可能存在数据一致性维护问题

 

垂直分表

垂直分表是对单个数据表进行拆分。
常见方案是将一个多字段的大表按字段的使用频率进行拆分。各分表所存字段不同,用主键进行关联。
例:
(《MySQL大表优化方案》)

 

完整 的 User 表:
【关系型数据库】垂直拆分_第1张图片

 

拆分后 的 User 表:
【关系型数据库】垂直拆分_第2张图片
 

优点

  • 表结构简化,易于维护
  • 单行数据量变小,一个数据块可存放更多行数据,可减少IO次数

缺点

  • 存在主键冗余列,管理复杂;
  • 事务处理复杂
  • 需要额外的表连接操作(join)。可在业务服务器join,减少数据库压力。

 

  • 【关系型数据库】垂直拆分_第3张图片
  • 大小: 100.6 KB
  • 【关系型数据库】垂直拆分_第4张图片
  • 大小: 103.5 KB
  • 查看图片附件

你可能感兴趣的:(【关系型数据库】垂直拆分)