数据库_水平分区_原理讲解

水平拆分

注意:文章是结合自己项目场景,已经所看到书籍参考而成,供大家参考。

  • 1.为什么水平拆分?
  • 2.怎么水平拆分
  • 3.水平拆分利与弊

为什么水平拆分?

描述:垂直拆分过之后,当mysql 单表数据超过3kw 被频繁访问或者数据更多的时候,会出现性能下降比例较大情况,这个时候就需要水平拆分解决性能问题。

怎么水平拆分?

水平拆分(就自己来看)不需要特别使用技术,更多是一种逻辑层面规划。
我们来实际想想怎么选取特定字段拆分,才能更有效操作。
场景:
用户发表的博客内容

post_id int(11) not null auto increment,
user_Id int(11) not null ,
post_content not null ,
post_time not null ,
.....

我们通过 user_id 进行 %10,比较合理把数据分布到各个分区表中,这样好处就是查询时候不会说某一区数据量较大。
tab_posts_00
tab_posts_01
tab_posts_02
tab_posts_03
tab_posts_04
tab_posts_05
tab_posts_06
tab_posts_07
tab_posts_08
tab_posts_09

这个时候我们就可以把分区的表分布在各个服务器上面。通过一个中心来映射到各个数据库地址(user_id 基本是每个表中都会存在字段)。

留几个问题:

  1. 如果需要重新扩展到20分区怎么办?
  2. 如果需要某些分区数据某部分改变?
  3. 如果解决以上问题,怎么提高效率?

水平拆分利与弊

优点:

  1. 不存在单库大数据,高并发的性能瓶颈。.
  2. 提高了系统的稳定性跟负载能力

缺点:

  1. 分片事务一致性难以解决。
  2. 数据多次扩展难度跟维护量极大。

解释一下:


优点 1 和 缺点 2
———> 优点1 :其实通过 上面就可以看出来,把数据分散,通过分区把压力分散。
———> 缺点2 :就是优点1 带来的问题,原来通过一条联合查询语句就可以轻松解决问题,在分区之后就需要通过用户id,在通过好友id 找到对应分区,从而找到好友信息。but 其实也还好,如果单表数据越来越多,开销也是非常大。 所以说每个改动都需要符合业务并且想好应对。

参考链接:
数据库 水平拆分
构建高性能Web 站点。

©️2020 CSDN 皮肤主题: 书香水墨 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值