【mysql 详解】mysql 数据库拆分

数据库拆分

通过某种特定的条件,按照某个唯独,将我们存放在用一个数据库中的数据分散存放到多个数据库(主机)上达到分散单库(主机)负载的效果

以mysql为例讲述下水平拆分和垂直拆分,mysql能容忍的数量级在百万静态数据可以到千万

垂直拆分

按照业务将表进行分类,把不同的表拆到不同的数据库中

优点:
  1. 拆分之后业务清晰,拆分规则明确
  2. 系统之间整合和扩展容易
  3. 数据维护简单
缺点
  1. 部分业务表无法jion只能用过接口方式解决,提高了系统复杂度
  2. 受每种业务不同的限制存在单库性能瓶颈,不易数据扩展和性能提高
  3. 事务处理复杂

水平拆分

垂直拆分后遇到单机瓶颈,可以使用水平拆分。按照某个字段的某种规则来分散到多个库之中,每个表中包含一部分数据,水平拆分是把同一个表拆到不同的数据库中

优点
  1. 不存在单库大数据,高并发的性能瓶颈。
  2. 对应用透明,应用端改造较少
  3. 按照合理拆分规则拆分,join操作基本避免跨库
  4. 提高了系统的稳定性跟负载能力
缺点
  1. 拆分规则难以抽象
  2. 分片事务一致性难以解决
  3. 数据多次扩展难度跟维护量极大
  4. 跨库join性能较差

两张方式共同缺点

  1. 引入分布式事务的问题。
  2. 跨节点Join 的问题。
  3. 跨节点合并排序分页问题。

拆分原则

  1. 尽量不拆分,架构是进化而来,不是一蹴而就。(SOA)
  2. 最大可能的找到最合适的切分维度。
  3. 由于数据库中间件对数据Join 实现的优劣难以把握,而且实现高性能难度极大,业务读取 尽量少使用多表Join -尽量通过数据冗余,分组避免数据垮库多表join。
  4. 尽量避免分布式事务。
  5. 单表拆分到数据1000万以内。

参考

数据库垂直拆分 水平拆分

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值