- 实现方式:该算法类似于十进制的求模运算,但是为二进制的操作,例如,取 id 的二进制低 10 位 与 1111111111 进行 & 运算
- 优点:这种策略比较灵活,可以均匀分配也可以非均匀分配,各节点的分配比例和容量大小由partitionCount 和 partitionLength两个参数决定
- 缺点:和取模分片类似。
-
配置示例:
<tableRule name="rule1">
<rule>
<columns>id</columns>
<algorithm>func1</algorithm>
</rule>
</tableRule>
<function name="func1" class="io.mycat.route.function.PartitionByLong">
<property name="partitionCount ">2,1</property>
<property name="partitionLength">256,512</property>
</function>
-
相关属性:
- partitionCount:为分片个数列表
- partitionLength:为分片范围列表,分片范围最大 2^10 = 1024
注意:在示例中配置的分片策略,希望将数据水平分成3份,前两份各占 25%,第三份占 50%。