MySQL分表问题。
将入队一个订单表进行了水平拆分,采用一致性Hash
算法,比如现在有2000w+
订单,拆分成10各表,tb0,tb1,tb2...tb9
。查询时可以对id进行运算得出对应的表。
id%10=n => tbn.
那么在插入一个新的订单时如何去选择插入的表?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(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即可)