开发者社区> 问答> 正文

如何改进生化数据库主键自增?

如何改进生化数据库主键自增?

展开
收起
kun坤 2020-04-24 11:11:47 397 0
1 条回答
写回答
取消 提交回答
  • 是的。确实如此,因此又有人说:“可以利用MySQL主从模式,主库挂了,使用从库。” 这只能算是一种比较low的策略,因为如果主库挂了,从库没来得及同步,就会生成重复的ID。有没有更好的方法呢?我们可以使用“双主模式“,也就是有两个MySQL实例,这两个都能生成ID。如图所示,我们原来的模式: 1.jpg

    双主模式是该怎么样呢?如何保持唯一性?我们可以让一台实例生成奇数ID,另一台生成偶数ID。

    奇数那一台:

    set @@auto_increment_offset=1;  --起始值
     set @@auto_increment_increment=2; -- 步长
    

    偶数那一台:

    set @@auto_increment_offset=2;  --起始值
     set @@auto_increment_increment=2; -- 步长
    

    当两台都OK的时候,随机取其中的一台生成ID;若其中一台挂了,则取另外一台生成ID。如图所示: 2.jpg 细心会发现,N个节点,只要起始值为1,2,...N,然后步长为N,就会生成各不相同的ID。(PS:后文有推导公式)

    2020-04-24 11:16:15
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
DTCC 2022大会集锦《云原生一站式数据库技术与实践》 立即下载
阿里云瑶池数据库精要2022版 立即下载
2022 DTCC-阿里云一站式数据库上云最佳实践 立即下载