分库分表之后,id 主键如何处理?

本文阅读 2 分钟
首页 知识库 正文

因为要是分成多个表之后,每个表都是从 1 开始累加,这样是不对的,我们需要一个全局唯一的 id
来支持。
生成全局 id 有下面这几种方式:
UUID:不适合作为主键,因为太长了,并且无序不可读,查询效率低。比较适合用于生成唯
一的名字的标示比如文件的名字。
数据库自增 id : 两台数据库分别设置不同步长,生成不重复ID的策略来实现高可用。这种方式
生成的 id 有序,但是需要独立部署数据库实例,成本高,还会有性能瓶颈。
利用 redis 生成 id : 性能比较好,灵活方便,不依赖于数据库。但是,引入了新的组件造成系
统更加复杂,可用性降低,编码更加复杂,增加了系统成本。
Twitter的snowflake算法 :Github 地址:https://github.com/twitter-archive/snowflake
美团的Leaf分布式ID生成系统 :Leaf 是美团开源的分布式ID生成器,能保证全局唯一性、趋
势递增、单调递增、信息安全,里面也提到了几种分布式方案的对比,但也需要依赖关系数据
库、Zookeeper等中间件。感觉还不错。美团技术团队的一篇文章:https://tech.meituan.co
m/2017/04/21/mt-leaf.html

解压密码: detechn或detechn.com

免责声明

本站所有资源出自互联网收集整理,本站不参与制作,如果侵犯了您的合法权益,请联系本站我们会及时删除。

本站发布资源来源于互联网,可能存在水印或者引流等信息,请用户自行鉴别,做一个有主见和判断力的用户。

本站资源仅供研究、学习交流之用,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担。

Mysql大表如何优化?
« 上一篇 08-26
MySQL 中一条查询 SQL 是如何执行的?
下一篇 » 08-26

发表评论

惪特博客
  • 文章总数:
    18474 篇
  • 评论总数:
    53155 条
  • 标签总数:
    8841 个
  • 总浏览量:
    19376921 次
  • 最后更新:
    10月12日

最多点赞

随便看看

标签TAG