MySQL分表问题。

将入队一个订单表进行了水平拆分,采用一致性Hash算法,比如现在有2000w+订单,拆分成10各表,tb0,tb1,tb2...tb9。查询时可以对id进行运算得出对应的表。

id%10=n => tbn.

那么在插入一个新的订单时如何去选择插入的表?

阅读 2.6k
2 个回答

你这个应该有个专门生成ID的服务,先忽略这个ID生成的实现细节,那么每次插入表也是一样的,获取到生成的ID之后,对这个ID进行运算,从而得到插入的表。
我下面贴一篇分布式ID生成的文章:
https://mp.weixin.qq.com/s?__...

此处的ID生成应该也是类似的。

tb0-9表的id是自增id,即记录的主键ID
选取一个字段用来唯一标识一个订单,比如订单ID,订单ID%10=n => tbn
主键ID 不等于 订单ID,读取和插入数据计算表号时都用订单ID即可
当然并不一定是订单ID,取决于具体的场景,只要能够用来唯一标识一个订单即可(可以是多个字段的组合,取下hash即可)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题