深入理解 分库分表——一

什么是分库分表?

与其说什么是分库分表不如说分库分表都包含哪些分法。

垂直分表

通过表字段拆分,将原来一个大表拆分为若干个小表(独立业务含义的表,或者**扩展表)。
在这里插入图片描述

通常我们在设计的时候就应该控制表字段的个数,而不能任由字段越来越多,再去垂直拆分表。

水平分表

在这里插入图片描述

通过分表(垂直、水平),直接减少了每张表的数据量。

  • 减少锁冲突

  • 可以使得行数据变小,一个数据块(Block)就能存放更多的数据,在查询时就会减少I/O次数(每次查询时读取的Block 就少)

  • 可以达到最大化利用Cache的目的,具体在垂直拆分的时候可以将不常变的字段放一起,将经常改变的放一起

  • 数据维护简单,便于扩展

通常我们会在水平分表的时候也做分库,因为垂直拆分后这些表还保存在同一个库中,所以库级别还是会有 IO 等瓶颈

单表进行切分后,是否要将切分后的多个表分散在不同的数据库服务…

垂直分库

在这里插入图片描述
垂直分库解决了数据业务层面的耦合,基于服务化的思想,便于后续扩张。同时也一定程度提升了单库的瓶颈限制。

水平分库

在这里插入图片描述
明显的解决了单库存在的瓶颈。

读写分离

在这里插入图片描述

  • 主库,提供数据库写服务
  • 从库,提供数据库读服务
  • 主从之间,通过某种机制同步数据,比如mysql的binlog

典型适用于读多写少的场景,线性提升数据库读性能,并且通过消除读写锁冲突提升数据库写性能。但是也会带来主从数据不一致的问题!根据场景考虑要使用缓存还是读写分离方案。

分库分表不是做的越多越好,一定要根据实际的情况出发。特别是对一些数据量有限,发展有限的业务,分库分表做了后优势不明显,带来的麻烦却很明显,下文详述

怎么分?

分库分表本质是将数据尽可能平均的分散,以避免产生的性能瓶颈。(垂直拆分核心解决性能瓶颈的同时,也是一种分布式服务化业务数据的思想)。

平均分拆数据

分库分表需要考虑的核心设计目标是尽可能的保证数据平均拆分,以避免明显的热点数据访问、数据增长过快可能会出现的瓶颈。

待续

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值