知识卡片

垂直分表与水平分表的区别

普通读书笔记卡 · 1665.a

内容

单表数据量过大时可按列切或按行切拆分:垂直分表把不常用、占空间大的字段拆到另一张表,减少高频查询字段所在表的体积,代价是一次查询变两次;水平分表把同结构表按规则(如按ID范围)拆成多个子表,解决单表行数过多的问题,但引入更复杂的路由、跨表join、排序问题。发散:垂直分表是结构优化,代价可控;水平分表是规模换复杂度,一旦选择就意味着跨表统计、排序、关联都要重新设计。

参考来源

- 位置:《从0开始学架构》第18章《15|高性能数据库集群:分库分表》"垂直分表""水平分表"两节(源文件:_epub-src/OEBPS/Text/part0017_split_002.html) - 结论依据:原文说明垂直分表"适合将表中某些不常用且占了大量空间的列拆分出去……垂直分表引入的复杂性主要体现在表操作的数量要增加",水平分表"适合表行数特别大的表,有的公司要求单表行数超过5000万就必须进行分表",并明确"相比接下来要讲的水平分表,这个复杂性就是小巫见大巫了"。 - 原始内容:垂直分表适合将表中某些不常用且占了大量空间的列拆分出去……垂直分表引入的复杂性主要体现在表操作的数量要增加……水平分表适合表行数特别大的表,有的公司要求单表行数超过5000万就必须进行分表……相比接下来要讲的水平分表,这个复杂性就是小巫见大巫了。