1 设 d个地区,每个地区c个集群,每个集群b个库,每个库a个表
index=hash % (a*b*c*d)
地区所在:index/(a*b*c)
index=index % (a*b*c)
集群所在:index/(a*b)
index=index % (a*b)
库所在:index/(a)
index=index % (a)
表所在:index
2 举个例子
1个地区d
2个集群c
4个库b
5个表a
某个key初始index=28,共40个槽,我们可以想出,27所在第1个地区,第2个集群,第2个库,第4个表(0、1、2、3)
我们用公式:
地区=28/40=0;index=28
集群=28/20=1;index=8
库 = 8/ 5=1;index=3
表 =3
索引从0开始
3 分表分库
此时d=c=1,公式简化为:
index=hash % (a*b*1*1)=hash %(a*b)
地区所在:index/(a*b*1)=0
index=index % (a*b*1)=hash %(a*b)
集群所在:index/(a*b)=0
index=index % (a*b)=hash %(a*b)
库所在:index/(a)
index=index % (a)
表所在:index
4 分表
index=index % (a*b)=hash %(a*b)=hash %(a)
库所在:index/(a)=0
index=index % (a)=hash %(a)
表所在:index