美文网首页
MyCat路由规则分析(二)

MyCat路由规则分析(二)

作者: john_zhong | 来源:发表于2017-05-17 17:24 被阅读117次

固定分片hash规则

在一些需要批量插入连续记录的交易中,如果使用普通的取模算法进行分片的话,很容易造成跨库事务,俾如下面的极端例子

user_id以10进行取模分片,在批量插入user_id为10010~10019的记录时,
user_id=10010的记录,10010 mod 10等于0,路由到分片0上
user_id=10011的记录,10011 mod 10等于1,路由到分片1上
……
如此类推,这10条记录被分配到10个不同的分片上,形成了一个复杂的跨库事务

这种跨库事务的复杂度,会伴随模数的增加、需要处理的连续记录的增多,而变得更加非常难以控制。另外,由于分配(插入)记录时就发生了上面的情况,后面的读取、更新和删除这些连续记录也必然会产生跨库事务。

相对于普通取模算法,此算法提取分片索引字段二进制值的低10位,来进行取模,然后再利用其它部分进行分片——这样能尽量将低10位相近的记录分到同一分片中,从而减少了上述的跨库事务问题的 发生概率

相关文章

  • MyCat路由规则分析(二)

    固定分片hash规则 在一些需要批量插入连续记录的交易中,如果使用普通的取模算法进行分片的话,很容易造成跨库事务,...

  • MyCat路由规则分析(十四)

    冷热数据分片 区分冷热数据的标准可以有很多种,在该规则里是按分片索引(日期类型或能转换成日期的文本)距离操作当天的...

  • MyCat路由规则分析(七)

    截取数字做hash求模范围约束 当我们需要仅对分片索引字段中,开头的字母、数字甚至是字母的混合部分作为分片依据时,...

  • MyCat路由规则分析(十)

    一致性hash 一般来说,基于hash算法的分片中,算法内部是把记录分片到一种叫做“bucket”(hash桶)的...

  • MyCat路由规则分析(九)

    截取数字hash解析 当我们需要仅对分片索引字段中的数字部分作为分片依据时,可以使用这个路由规则来将“从第x字符开...

  • MyCat路由规则分析(十五)

    自然月分片 流水账之类的表,常常会有“保存至少24个月的交易数据”、“业务的查询以月为单位”之类的需求或情况。在这...

  • 转载--Mycat源码分析目录

    Mycat源码分析目录 1. mycat2.0-启动流程 2. mycat2.0分析系列之二--Heartbeat...

  • Mycat路由

    路由接口 io.mycat.route.RouteService方法: 计算流程概述 conditions 为<表...

  • Dubbo源码分析(十六) Router实现

    下面我们来分析一下Dubbo的Router机制。Dubbo的路由规则就是根据路由规则从多个Invoker中选出一个...

  • thinkphp5学习笔记(三)路由配置

    URL请求的执行流程 路由模式 路由注册 路由规则 路由地址 路由参数 变量规则 路由分组 别名路由 路由绑定

网友评论

      本文标题:MyCat路由规则分析(二)

      本文链接:https://www.haomeiwen.com/subject/dpndxxtx.html