MyCat固定分片hash算法

本條規則是取id的二進制低10位(id二進制&1111111111)
此算法的優點在於如果按照10進製取模運算,在連續插入1-10時候1-10會被分到1-10個分片,增大了插入的事務控制難度,
而此算法根據二進制則可能會分到連續的分片,減少插入事務控制難度。

<tableRule name="rule1">
<rule>
<columns>user_id</columns>
<algorithm>func1</algorithm>
</rule>
</tableRule>
<function name="func1" class="org.opencloudb.route.function.PartitionByLong">
<property name="partitionCount">2,1</property>
<property name="partitionLength">256,512</property>
</function>

配置說明:
columns:分片依據的表字段
algorithm:分片函數
partitionCount:分片個數列表
partitionLength:分片範圍列表
分片長度:默認爲最大2^n=1024,即最大支持1024分區
約束:
count,length兩個數組的長度必須是一致的
如上有兩個數據:
(partitionCount[0]*partitionLength[0])=(partitionCount[1]*partitionLength[1])
以上分爲三個分區:0-255,256-511,512-1023
故user_id的低10位二進制&1111111111後根據以上範圍落入指定的區域。
例如:
1023的二進制&1111111111運算後爲1023,故落入第三個分區 
1024的二進制&1111111111運算後爲0,故落入第一個分區
266 的二進制&1111111111運算後爲266,故落入第二個分區內

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章