分区、分表、分库的理解

简单的理解即为:

分区就是在一个库内,将一张表,根据你想要的规则划分为表1、表2、表3等,这些表定义什么都是一样的,同时索引也会进行分区。很简单粗暴地根据常用的RANGE分区举个例子,一栋楼里面的每层楼都是一样的的,然后根据楼层,将它分为高楼层、中楼层、低楼层三种,这个时候假设开发商好一点,给你整了三部电梯,分别只上高、中、低三个楼层,这样你就可以根据你的楼层数坐对应的电梯,较快速地抵达你想要抵达的楼层。

 

分表就是把一张表按一定的规则分解成N个具有独立存储空间的实体表。系统读写时需要根据定义好的规则得到对应的字表名,然后对这张表做对应的增删查改。开始我不能理解为啥会有这个,因为现在的数据库在设计的时候,基本上每张表为了减少冗余都分得很明确了,如果再分表的话和开始的时候多设计一张表有什么区别。后来发现主要用于:当一张表的查询速度已经慢到影响使用的时候;sql经过优化的时候;数据量大的时候;当频繁插入或者联合查询时,速度变慢的时候。这个的理解就是一本书,根据需要,被分成了不同章节。

 

分库就是当单个数据库已经不能处理很多的数据量的时候,就可以增加多一个数据库。

那数据要被如何安放在多个数据库里面呢?

1、垂直拆分

将系统中不存在关联关系或者需要join的表可以放在不同的数据库不同的服务器中。

按照业务垂直划分。比如:可以按照业务分为资金、会员、订单三个数据库。

需要解决的问题:跨数据库的事务、join查询等问题。

2、水平拆分

例如,大部分的站点。数据都是和用户有关,那么可以根据用户,将数据按照用户水平拆分。

按照规则划分,一般水平分库是在垂直分库之后的。比如每天处理的订单数量是海量的,可以按照一定的规则水平划分。需要解决的问题:数据路由、组装。

3、读写分离

对于时效性不高的数据,可以通过读写分离缓解数据库压力。需要解决的问题:在业务上区分哪些业务上是允许一定时间延迟的,以及数据同步问题。

推荐一篇写得很好的文章:https://www.codetd.com/article/2991790

我写的这个算是观后感吧

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值