mycat的10种分片规则
所有的分片规则配置的tableRule标签中:
rule标签中的columns标签内填写要分片的表字段,algorithm标签内填写分片所使用的自定义函数名,要与function函数中的name属性保持一致
function函数中的property标签内配置自定义参数。
1)枚举法:sharding-by-intfile
user_id
hash-int
partition-hash-int.txt
0
0
mapFile 中是自定义的分片策略文件,需要自己编写
type表示分片字段的类型,其中1表示字符串,0表示int类型
defaultNode配置是否使用默认节点,默认为0,表示不设置默认节点,这样会导致遇到不识别的枚举值时会报错,如果设置的值大于零,该值就是默认节点,会把不识别的枚举值分配到默认节点。
这种方法适用于取值固定的场合,例如性别和省份
2)固定分片:rule 1
user_id
func1
2,1
256,512
partitionCount 表示分片个数列表,partitionLength 表示分片范围列表,两者可以都配单个值或多个值
因为分区长度默认为最大2^n=1024 ,即最大支持1024分区
所以两个值的点积恒等于1024,也就是说2*256+1*512=1024或者2*512=1024(分为两片)或者4*256=1024(分为四片)
3)范围约定:auto-sharding-long
user_id
rang-long
autopartition-long.txt
autopartition-long.txt文件中编写分片规则,根据指定的列的范围进行分片.默认从0节点开始
例如:0-200000=0
200000-400000=1
0-200000范围分配各节点0
200000-400000范围分配各节点1
这种方法适用于总数可知的分片场景,但是扩展比较麻烦,短时间大量顺序插入会造成单个节点压力过大
4)求模法:mod-long
user_id
mod-long
3
根据配置中的count值进行分片,将数据分成配置的count份,然后将数据均匀的分布在各个节点上,适用于单节点查询,但是查询量偏高的跨库查询会增加耗时。
5)日期列分区法:sharding-by-date
create_time
sharding-by-date
yyyy-MM-dd
2019-09-20
5
dateFormat为字段格式,sBeginDate为开始日期,sPartionDay为分区天数。
该方法的分区方法为:从开始日期,每隔5天分一个分区;
6)通配取模:sharding-by-pattern
user_id
sharding-by-pattern
256
2
partition-pattern.txt
patternValue是求模基数,使用int型分片字段与基数取模,根据取模结果和配置文件partition-pattern.txt决定分区,如果文件中配置1-32=1,则取模结果在范围1-32时分到1区。如果字段值不为int则分配到defaultNode配置的分区中。
7)ASCII码取模:sharding-by-prefixpattern
user_id
sharding-by-prefixpattern
256
5
partition-pattern.txt
patternValue 为求模基数,prefixLength ASCII 截取的位数
该方法截取字段值ASCII 码的指定位数(prefixLength 值)与求模基数(patternValue值)取模,然后根据配置文件partition-pattern.txt的内容分区
8)编程指定:sharding-by-substring
user_id
sharding-by-substring
0
2
8
0
该方法的指定字段必须为数字,size为截取的位数,partitionCount为分区个数,defaultPartition为默认节点。
给方法从第0个索引的数字截取字段的指定位数,截取到的数字就是分区节点编号,如果没有传值,分配到默认分区节点。例:01-55888分配到01分区
9)字符串拆分hash解析:sharding-by-stringhash
user_id
sharding-by-stringhash
512
2
0:2
函数中length代表字符串hash求模基数,count是分区数,hashSlice为预算位,
该方法根据子字符串中的int值进hash运算,然后得出分区;
例如:hashSlice为0:2时截取字段值得0-2位值进行hash求模
hashSlice为-4:0时截取字段值倒数第四位到第0位值进行hash求模
10)一致性hash:sharding-by-murmur
user_id
murmur
0
2
分类: ,
标签: mycat
夜阑风雪
关注 - 2
粉丝 - 2 关注成功 0 0 上一篇:
下一篇: https://www.cnblogs.com/KelvinDaniels/p/11572775.html
关注 - 2
粉丝 - 2 关注成功 0 0 上一篇:
下一篇: https://www.cnblogs.com/KelvinDaniels/p/11572775.html