多重分表分库一般解决方案

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

猜你喜欢

转载自www.cnblogs.com/silyvin/p/12650190.html