当前位置:首页 > 科技  > 软件

被追着问UUID和自增ID做主键哪个好,为什么?

来源: 责编: 时间:2024-05-29 17:31:09 100观看
导读之前无意间看到群友讨论到用什么做主键比较好图片图片图片其实 UUID 和自增主键 ID 是常用于数据库主键的两种方式,各自具有独特的优缺点。UUIDUUID 是一个由 128 位组成的唯一标识符,通常以字符串形式表示。它可以通过

之前无意间看到群友讨论到用什么做主键比较好nHb28资讯网——每日最新资讯28at.com

图片图片nHb28资讯网——每日最新资讯28at.com

图片图片nHb28资讯网——每日最新资讯28at.com

图片图片nHb28资讯网——每日最新资讯28at.com

其实 UUID 和自增主键 ID 是常用于数据库主键的两种方式,各自具有独特的优缺点。nHb28资讯网——每日最新资讯28at.com

UUID

UUID 是一个由 128 位组成的唯一标识符,通常以字符串形式表示。它可以通过不同的算法生成,例如基于时间戳的 UUID(version 1)和基于随机数的 UUID(version 4)等。nHb28资讯网——每日最新资讯28at.com

UUID 的优点

  • 全局唯一性:通过不同算法生成,几乎能够保证在全球范围内的唯一性,从而避免了多台机器之间可能发生的主键冲突问题。
  • 不可预测性:随机生成的 UUID 很难被猜测,因此在需要保密性的应用场景下非常适用。
  • 分布式应用:由于可以在不同的机器上生成 UUID,因此可以被广泛应用于分布式系统中。

然而,UUID 作为主键 ID 也存在一些缺点:nHb28资讯网——每日最新资讯28at.com

  • 存储空间较大:UUID 通常以字符串形式存储,占用的存储空间较大。
  • 不适合范围查询:由于不是自增的,不支持范围查询。新生成的 UUID 可能会插入到已有数据的中间位置,导致范围查询时出现数据重复或漏数据的情况。
  • 不方便展示:UUID 通常比较长,且没有明确的业务含义,因此不太适合在系统间或前台页面进行展示。
  • 查询效率低下:

在 UUID 列上创建索引会导致索引大小增加,从而影响缓存命中率,增加磁盘 I/O 需求,同时也增加了查询时的内存开销。nHb28资讯网——每日最新资讯28at.com

当使用 UUID 进行排序时,新生成的 UUID 通常会插入到叶子节点的中间位置,导致 B+树的频繁分裂和平衡操作,进而影响查询性能。nHb28资讯网——每日最新资讯28at.com

自增 ID

在 MySQL 中,可以通过设置 AUTO_INCREMENT 属性实现 ID 的自增长,通常用于作为主键 ID。nHb28资讯网——每日最新资讯28at.com

使用自增 ID 作为主键的好处包括:nHb28资讯网——每日最新资讯28at.com

  • 存储空间节省:ID 为数字,占用的位数比 UUID 小得多,因此在存储空间上更加节省。
  • 查询效率高:ID 递增,利于 B+Tree 索引的查询效率提高。
  • 方便展示:ID 较短,方便在系统间或前台页面进行展示。
  • 分页方便:ID 连续自增,有利于解决深度分页问题。

然而,使用自增主键也存在一些问题:nHb28资讯网——每日最新资讯28at.com

  • 分库分表困难:在分库分表时,无法依赖单一表的自增主键,可能导致冲突问题。
  • 可预测性:由于 ID 是顺序自增的,因此具有一定可预测性,存在一定的安全风险。
  • 可能用尽:自增 ID 可能是 int、bigint 等,但它们都有范围限制,可能会用尽。
  • 性能问题:在数据迁移期间,如果使用自增主键,数据库可能会产生额外的性能开销。这可能是由于重新计算主键值或更新相关索引所致。这可能会导致数据迁移过程变慢。

到底什么是 UUID,它能保证唯一吗?

UUID(Universally Unique Identifier)是一种全局唯一标识符,用于在同一时空中的各台机器上保证唯一性。nHb28资讯网——每日最新资讯28at.com

UUID 的生成基于特定算法,通常使用随机数生成器或基于时间戳的方式。生成的 UUID 以 32 位 16 进制数表示,总共 128 位(标准 UUID 格式为:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,共 32 个字符)。nHb28资讯网——每日最新资讯28at.com

由于 UUID 是由 MAC 地址、时间戳、随机数等信息生成的,因此具有极高的唯一性,几乎不可能重复。但在实际实现中,UUID 有多种版本,它们的唯一性指标也有所不同。nHb28资讯网——每日最新资讯28at.com

UUID 的具体实现版本包括基于时间的 UUID V1 和基于随机数的 UUID V4 等。nHb28资讯网——每日最新资讯28at.com

在 Java 中,java.util.UUID生成的 UUID 包括 V3 和 V4 两种版本。nHb28资讯网——每日最新资讯28at.com

图片图片nHb28资讯网——每日最新资讯28at.com

UUID 的优缺点

UUID 的优点在于其性能较高,不依赖网络,可以在本地生成,并且使用起来相对简单。nHb28资讯网——每日最新资讯28at.com

然而,UUID 也存在两个明显的缺点:nHb28资讯网——每日最新资讯28at.com

  1. 长度过长:UUID 通常由 32 位 16 进制数字组成,因此长度较长。例如,对于类似"550e8400-e29b-41d4-a716-446655440000"的字符串,几乎没有任何程序员能够直观理解其含义。
  2. 缺乏含义:UUID 是随机生成的,因此缺乏任何业务或语义上的含义。一旦将其用作全局唯一标识,可能导致在日后的问题排查和开发调试过程中遇到较大困难。

各个版本实现

  • V1. 基于时间戳的 UUID

基于时间戳的 UUID 是通过计算当前时间戳、随机数和机器 MAC 地址得到的。由于算法中使用了 MAC 地址,这个版本的 UUID 能够确保在全球范围内的唯一性。然而,使用 MAC 地址也带来了安全性问题,因此这个版本的 UUID 受到了批评。如果应用只在局域网中使用,也可以使用一种简化的算法,以 IP 地址代替 MAC 地址。nHb28资讯网——每日最新资讯28at.com

  • V2. DCE(Distributed Computing Environment)安全的 UUID

这个版本的 UUID 算法与基于时间戳的 UUID 相同,但会将时间戳的前 4 位替换为 POSIX 的 UID 或 GID。然而,实际中较少使用这个版本的 UUID。nHb28资讯网——每日最新资讯28at.com

  • V3. 基于名称空间的 UUID(MD5)

基于名称空间的 UUID 通过计算名称和名称空间的 MD5 散列值得到。这个版本的 UUID 保证了以下几点:在相同名称空间中,不同名称生成的 UUID 具有唯一性;不同名称空间中的 UUID 是唯一的;在相同名称空间中,相同名称生成的 UUID 是重复的。nHb28资讯网——每日最新资讯28at.com

  • V4. 基于随机数的 UUID

基于随机数的 UUID 是根据随机数或伪随机数生成的。该版本的 UUID 使用随机数生成器生成,保证了生成的 UUID 具有极佳的唯一性。然而,由于其基于随机数,因此不太适用于数据量特别大的场景。nHb28资讯网——每日最新资讯28at.com

  • V5. 基于名称空间的 UUID(SHA1)

与版本 3 的 UUID 算法相似,但使用 SHA1(Secure Hash Algorithm 1)算法进行散列值计算。nHb28资讯网——每日最新资讯28at.com

各版本 UUID 简要总结如下:

Version 1 和 Version 2:nHb28资讯网——每日最新资讯28at.com

  • 基于时间戳和 MAC 地址,适合分布式计算环境,具有高度唯一性。

Version 3 和 Version 5:nHb28资讯网——每日最新资讯28at.com

  • 基于名称空间,在一定范围内是唯一的,可用于生成重复 UUID 的场景。

Version 4:nHb28资讯网——每日最新资讯28at.com

  • 简单地基于随机数生成,适合数据量不是特别大的场景,但可靠性较低。

本文链接://www.dmpip.com//www.dmpip.com/showinfo-26-91526-0.html被追着问UUID和自增ID做主键哪个好,为什么?

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 多线程技术应用之并行下载并通知运行状态

下一篇: SpringBoot3.x系统架构的任务调度和问题解决

标签:
  • 热门焦点
  • 8月总票房已突破10亿!《封神》第一:口碑已经成了

    8月总票房已突破10亿!《封神》第一:口碑已经成了

    8月5日消息,据灯塔专业版数据,截至8月5日9时35分,8月总票房(含预售)已突破10亿。其中,《封神》以大比分的优势领先。根据官方消息,目前该片总票房已经超过14.
  • 2023 年的 Node.js 生态系统

    2023 年的 Node.js 生态系统

    随着技术的不断演进和创新,Node.js 在 2023 年达到了一个新的高度。Node.js 拥有一个庞大的生态系统,可以帮助开发人员更快地实现复杂的应用。本文就来看看 Node.js 最新的生
  • 如何使用JavaScript创建一只图像放大镜?

    如何使用JavaScript创建一只图像放大镜?

    译者 | 布加迪审校 | 重楼如果您曾经浏览过购物网站,可能遇到过图像放大功能。它可以让您放大图像的特定区域,以便浏览。结合这个小小的重要功能可以大大改善您网站的用户体验
  • 中国家电海外掘金正当时|出海专题

    中国家电海外掘金正当时|出海专题

    作者|吴南南编辑|胡展嘉运营|陈佳慧出品|零态LT(ID:LingTai_LT)2023年,出海市场战况空前,中国创业者在海外纷纷摩拳擦掌,以期能够把中国的商业模式、创业理念、战略打法输出海外,他们依
  • 大厂卷向扁平化

    大厂卷向扁平化

    来源:新熵作者丨南枝 编辑丨月见大厂职级不香了。俗话说,兵无常势,水无常形,互联网企业调整职级体系并不稀奇。7月13日,淘宝天猫集团启动了近年来最大的人力制度改革,目前已形成一
  • 年轻人的“职场羞耻感”,无处不在

    年轻人的“职场羞耻感”,无处不在

    作者:冯晓亭 陶 淘 李 欣 张 琳 马舒叶来源:燃次元“人在职场,应该选择什么样的着装?”近日,在网络上,一个与着装相关的帖子引发关注,在该帖子里,一位在高级写字楼亚洲金
  • 华为Mate 60保护壳曝光:硕大后置相机模组 凸起程度有惊喜

    华为Mate 60保护壳曝光:硕大后置相机模组 凸起程度有惊喜

    这段时间以来,关于华为新旗舰的爆料日渐密集。据此前多方爆料,今年华为将开始恢复一年双旗舰战略,除上半年推出的P60系列外,往年下半年的Mate系列也将
  • 超闭合精工铰链 彻底消灭缝隙 三星Galaxy Z Flip5与Galaxy Z Fold5发布

    超闭合精工铰链 彻底消灭缝隙 三星Galaxy Z Flip5与Galaxy Z Fold5发布

    2023年7月26日,三星电子正式发布了Galaxy Z Flip5与Galaxy Z Fold5。三星新一代折叠屏手机采用超闭合精工铰链,让折叠后的缝隙不再可见。同时,配合处
  • OPPO K11采用全方位护眼屏:三大护眼能力减轻视觉疲劳

    OPPO K11采用全方位护眼屏:三大护眼能力减轻视觉疲劳

    日前OPPO官方宣布,全新的OPPO K11将于7月25日正式发布,将主打旗舰影像,和同档位竞品相比,其最大的卖点就是将配备索尼IMX890主摄,堪称是2000档位影像表
Top
Baidu
map