mysql分片的几种分配策略 - 固定、动态、固动结合、显示分配等

假设我们要对用户的数据进行分片存储,依据的是用户id

1 关于固定分配

核心是利用哈希函数将输入的id值映射到一个输出值上,这个输出值就直接是分片id,注意这一点很重要,这是与混合分配策略区分的关键。
在这里插入图片描述

2 动态分配

动态分配不使用哈希函数,而是先建立一张分配表,有用户id字段以及分片id字段,当加入一个新用户时会直接按预先设置好的规则将映射记录加入到表中,取出数据时会先查询这个映射表得知用户数据存储在哪个分片上,然后再去对应的分片查找数据。
在这里插入图片描述

3 混合分配方式(固定+动态)redis的分片策略采用的就是这种模式。

可以参考这篇文章:Redis Cluster数据分片实现原理、及请求路由实现

乍一看,可能会把它和固定分配方式混淆,确实很像,因为一开始都用到了哈希函数,这一点体现了固定分配;体现动态分配的点在于混合分配中的哈希函数的输出不直接等于分片id,它的输出可以根据一定的规则与某一个分片id进行绑定,这就相当于有了映射关系,类似于动态分配,这里的映射关系也可以存储到一张数据表中。
在这里插入图片描述

4 显式分配

核心:把数据粉片号编码到ID中,这样就能避免额外 “查询分片映射表”的操作
在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值