垂直切分
- 按照业务对数据表分类,把数据库拆分为多个业务维度的数据库
优点
- 提高数据库访问负载
缺点
- 无法减少单表数据量
- 无法跨 mysql 节点进行表连接查询,只能通过接口方式解决
- 跨 mysql 节点的事务,需要用分布式事务
水平切分
- 根据字段的切分规则,将一张表切分为多张表,将数据进行分散
- 不需要放在多个节点——利用表空间
优点
- 单表拆分多张表存储,存储量大
缺点
- 不同数据表的切分规则并不一致,需要按照实际业务来确定
- 集群扩容比较麻烦,需要迁移大量的数据
选择
- 一开始项目是单体的,在迭代升级,优先演化为水平切分
- 增加分片的代价太大,可以对分片数据做冷热数据分离,归档冷数据进行缩表