Mycat (三) —— 分片策略

一.分片算法

1.范围分片(容易出现冷热数据

   根据id所在的区间范围进行分片





id
rang-long




autopartition-long.txt



 

0-500M=0
500M-1000M=1
1000M-1500M=2

2. 按自然月分片





create_time
qs-partbymonth


yyyy-MM-dd
2025-10-01
2025-12-31

3.取模分片(分布均匀,但是迁移工作量比较大)



id
mod-long





2

4.枚举分片(适用于枚举值固定的分片)

将所有可能出现的值列举出来,指定分片。例如:全国 34 个省,要将不同的省的数据存放在不同的节点,可用枚举的方式

provice hash-int partition-hash-int.txt 1 0

策略文件:partition-hash-int.txt

山东=0
河南=1

5.一致性哈希(有效解决分布式数据的扩容问题

      一致性哈希算法的形象解释:https://zhuanlan.zhihu.com/p/24440059

id murmur 0 2 160

6.固定分片哈希

    先求模得到逻辑分片号,再根据逻辑分片号直接映射到物理分片

id sharding-by-long 2 128 2,1 256,512

7.取模范围分片

id sharding-by-pattern 100 0 partition-pattern.txt
 #id partition range start-end ,data node index
1-20=0
21-70=1
71-100=2

patternValue 取模基数,这里设置成 100
partition-pattern.txt,一共 3 个节点
id=19%100=19,在 dn1;
id=222%100=22,dn2;
id=371%100=71,dn3

8、范围取模分片(扩容的时候旧数据无需迁移)

id qs-rang-mod partition-range-mod.txt
# range start-end ,data node group size
0-20000=1
20001-40000=2

先范围后取模。Id 在 20000 以内的,全部分布到 dn1。Id 在 20001-40000的,%2 分布到 dn2,dn3

二.切分规则

步骤:
1、找到需要切分的大表,和关联的表
2、确定分片字段(尽量使用主键),一般用最频繁使用的查询条件
3、考虑单个分片的存储容量和请求、数据增长(业务特性)、扩容和数据迁移

你可能感兴趣的:(Mycat,数据库)