- 实现方式:其思想和范围取模分片一样,由于日期取模会出现数据热点问题,所以先根据日期分组,再根据时间 hash 使得短期数据分布跟均匀。
- 优点:避免扩容时的数据迁移,可以在一定程度上避免范围分片的热点问题
- 缺点:要求日期格式尽量精确,不然达不到局部均匀的目的
-
配置示例:
<tableRule name="sharding-by-range-date-hash">
<rule>
<columns>create_time</columns>
<algorithm>sharding-by-range-date-hash</algorithm>
</rule>
</tableRule>
<function name="sharding-by-range-date-hash"
class="io.mycat.route.function.PartitionByRangeDateHash">
<property name="dateFormat">yyyy-MM-dd HH:mm:ss</property>
<property name="sBeginDate">2018-01-31 00:00:00</property>
<property name="sPartionDay">3</property>
<property name="groupPartionSize">6</property>
</function>
-
相关属性:
- dateFormat:日期格式,必须需要时间
- sBeginDate:开始日期,于 dateFormat 格式一致
- sPartionDay:代表多少天一组
- groupPartionSize:每组的分片数量