- 实现方式:切分规则根据文件(autopartition-long.txt)配置的范围来进行切片,制定基准列的取值范围,然后把这一范围的所有数据都放到一个DN上面
- 优点:适用于整体数量可知或总数量为固定值的情况
- 缺点:dataNode 划分节点是事先建好的,需要扩展时比较麻烦。潜在的问题,如果在短时间发生海量的顺序插入操作,而每一个dataNode(分库)设定的数量比较高(比如说一个dataNode设定的放1000W条数据),那么在这个时候,会出现某一个dataNode(分库)IO压力非常高,而其他几个dataNode(分库)完全没有IO操作,就会出现类似于DB中常见的热块/热盘的现象
-
配置示例:
<tableRule name="auto-sharding-long">
<rule>
<columns>user_id</columns>
<algorithm>rang-long</algorithm>
</rule>
</tableRule>
<function name="rang-long" class="io.mycat.route.function.AutoPartitionByLong">
<property name="mapFile">autopartition-long.txt</property>
<property name="defaultNode">0</property>
</function>
-
相关属性:
- mapFile:切分规则配置文件
- defaultNode:默认节点,小于0表示不设置默认节点,大于等于0表示设置默认节点,如果超出配置的范围,则使用默认节点
-
autopartition-long.txt 示例:
#range start-end,dataNode index
#K=1000,M=10000
0-100K=0
100K1-200K=1