垂直切分

  • 按照业务对数据表分类,把数据库拆分为多个业务维度的数据库

优点

  • 提高数据库访问负载

缺点

  • 无法减少单表数据量
  • 无法跨 mysql 节点进行表连接查询,只能通过接口方式解决
  • 跨 mysql 节点的事务,需要用分布式事务

水平切分

  • 根据字段的切分规则,将一张表切分为多张表,将数据进行分散
    • 不需要放在多个节点——利用表空间

优点

  • 单表拆分多张表存储,存储量大

缺点

  • 不同数据表的切分规则并不一致,需要按照实际业务来确定
  • 集群扩容比较麻烦,需要迁移大量的数据

选择

  • 一开始项目是单体的,在迭代升级,优先演化为水平切分
  • 增加分片的代价太大,可以对分片数据做冷热数据分离,归档冷数据进行缩表