第三章:什么是分库分表

背景

一个系统当伴随着用户量的激增,业务数据的不断增加,数据库表中的数据越来越多,如果再去对我们数据库中的表进行curd操作的时候,就会造成一些性能上的瓶颈问题!
这就引入了我们今天话题,分库分表

什么是分库分表

我们就从他的字面意思来理解,这样有助于我们对分库分表有一个清晰的了解

分库:他就是将我们原来用于存放单个数据库中的数据,进行拆分,将它存储到多个数据库中

分表:他就是将我们原来存放在单个表中的数据,进行拆分,将它存储到多张表中

为什么要分库分表

分库分表自然是为了提升软件系统的性能以及增加其可用性

性能

随着系统上线的时间越久,数据量就会越大,我们查询的QPS也会越来越高的,那么相对应的读写时间也会增加。这样就导致了我们数据库读写的瓶颈期。从而考虑对数据库性能方面的优化。

可用性

我们都知道单体数据库如果发生了意外情况,就会导致我们数据的丢失。我们常规的保证可用行使用的是MS或者MM等等部署方式来解决可用性的问题。其实,我们对数据进行拆分也会提高容灾及可用性。

什么时候考虑分库分表

什么时候分库

当我们的业务量持续增大的时候,多个服务在共享一个单体数据库的时候,数据库就会遇到性能瓶颈,这个时候就需要考虑分库。比如订单和用户等,都可以抽取出来,然后在搞个应用(其实就是微服务思想),并且拆分数据库(订单库、用户库)。
数据库被切分以后后,就不能再依赖数据库自身的主键生成机制,最简单的可以考虑UUID(不连续,性能不佳),或者使用雪花算法来生成分布式ID(推荐使用)。

什么时候分表

当我们的系统处于快速发展的时期,如果每天订单的流水都新增几十万,并且,订单表的查询效率明显变慢的时候,就需要考虑进行规划分库分表了。一般B+树索引高度是2~3层最佳,当数据量达到千万级别,可能高度就变4层了,查询就会明显变慢了。不过业界流传,一般500万数据就开始要考虑分表了。

欢迎大家点击下方卡片,关注《coder练习生》

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ybb_ymm

你的鼓励会是对我最大的支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值