主从结构解决了高可用,读扩展。但是单机写性能无法扩展。
使用分库分表-》提升容量、解决写的压力

扩展立方体

x: 复制全部数据
y:根据不同的功能、业务拆分
z:不改变库的结构,只是数据分片
image.png

垂直拆分:

按业务拆分-> 分布式服务化->微服务架构

1.拆库

数据结构本身发生变化,sql和关联关系也必须随之变化,对业务影响比较大。

2.拆表

把大表拆成多个子表,比如订单表拆出一个订单详情表、支付表、产品快照表。

3.垂直拆分优缺点

优点:

  1. 单库变小
  2. 便于管理和维护
  3. 对容量和性能有所提升
  4. 系统和数据复杂度降低
  5. 微服务改造的基础

缺点:

  1. 库变多了,管理就变得复杂
  2. 对业务系统有较大的侵入性
  3. 过程复杂,影响面比较大,容易出故障
  4. 拆分到一定程度无法继续拆分

    4.做法

    1.梳理拆分范围和影响到的范围
    2.检查评估并重构影响到的服务
    3.准备新的集群复制数据
    4.修改系统配置并发布新版上线

水平拆分:

分库、分表、分库分表
就是直接对数据进行分片,比如:

  1. 按照id除以32取模,把单库拆成32个库,每个库里按照order_id除以32取模分成32个表。
  2. 按照日期属性,比如按月、天划分不同的表。
  3. 按照指定的条件分库分表。

分库还是分表怎么选择?
优点:

  1. 解决容量问题
  2. 比垂直拆分对系统影响小
  3. 提升性能和稳定性

缺点:

  1. 集群规模大,管理复杂
  2. 复杂sql支持维妮塔
  3. 数据迁移问题
  4. 一致性问题

**