垂直拆分是数据拆分方式中比较简单的方式(相对于水平拆分而言)。
注意:垂直拆分后单表数据量未变,依然很大(需要 水平拆分)。
垂直拆分有 分库 和 分表 两种方式。
垂直分库
垂直分库就是根据数据表的相关性将数据表拆分到不同的数据库中。
如,某个系统中,最初是将 用户数据表 和 订单数据表 放在同一个数据库中。
我们可以将 用户数据表 放入 用户库,订单数据表 放入 订单库。
优点:不同业务由不同数据库提供支持,可降低单个数据库的压力。
缺点:
-
上层业务需额外处理不同的数据源;
-
可能存在数据一致性维护问题。
垂直分表
垂直分表是对单个数据表进行拆分。
常见方案是将一个多字段的大表按字段的使用频率进行拆分。各分表所存字段不同,用主键进行关联。
例:
(《MySQL大表优化方案》)
完整 的 User 表: