温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

UUID在数据库中的作用是什么

发布时间:2026-07-01 16:52:06 来源:亿速云 阅读:94 作者:小樊 栏目:数据库

UUID(通用唯一识别码,Universally Unique Identifier)在数据库中的主要作用是为数据记录提供全局唯一的标识符。与传统的自增主键(如 AUTO_INCREMENTINTBIGINT)相比,UUID 有自己独特的应用场景和优缺点。

下面从作用、优势、缺点和使用场景几个方面说明。


一、UUID 在数据库中的主要作用

1. 唯一标识数据记录

UUID 的核心作用是保证每条记录在分布式系统中唯一,即使在多个数据库实例、多个服务器、甚至多个系统中生成,也不会发生冲突。

例如:

UUID: 550e8400-e29b-41d4-a716-446655440000

2. 支持分布式系统

在传统自增 ID 中:

  • 只能依赖同一个数据库实例生成
  • 在分库分表或微服务中容易出现冲突

UUID 可以在应用层或任意节点生成,适合:

  • 微服务架构
  • 分布式数据库
  • 多数据中心部署

3. 避免 ID 被猜测

自增 ID 是连续的:

1, 2, 3, 4, 5

容易被推测:

  • 用户 ID 被遍历
  • 订单 ID 被爬取

UUID 是随机的:

a3f5c9e2-8b1d-4c6a-9f21-32ab12cd8741

安全性更高,适合对外暴露的主键。


4. 提前生成 ID(离线生成)

UUID 可以在:

  • 客户端
  • 应用服务器
  • 插入数据库之前

就已生成,适合:

  • 异步处理
  • 消息队列
  • 批量数据同步

二、UUID 的常见版本

版本 说明
UUID v1 基于时间戳 + MAC 地址(可能泄露机器信息)
UUID v4 完全随机(最常用)
UUID v7 基于时间戳 + 随机数(趋势递增,数据库更友好,推荐)

三、UUID 在数据库中的优缺点

✅ 优点

  1. 全局唯一,不依赖数据库
  2. 适合分布式系统
  3. 避免 ID 泄漏和猜测
  4. 可提前生成,解耦数据库

❌ 缺点

  1. 占用空间大

    • 36 字符字符串
    • 或 128 bit(16 字节)
    • BIGINT(8 字节)大一倍
  2. 索引性能较差

    • UUID v4 完全随机 → 插入时索引频繁分裂
    • 对 B+Tree 不友好
  3. 可读性差

    • 不适合人类识别
    • 日志调试不直观

四、UUID 适合用在什么场景?

✅ 适合

  • 分布式系统 / 微服务
  • 分库分表
  • 对外暴露 ID(用户、订单)
  • 多系统数据同步
  • 需要提前生成 ID 的场景

❌ 不太适合

  • 高并发写入 + 强性能要求
  • 简单单体系统
  • 完全内部使用、ID 不暴露

五、UUID vs 自增 ID 对比

对比项 UUID 自增 ID
唯一性 全局唯一 单库唯一
分布式
安全
性能
占用空间
可读性

六、改进方案(更推荐)

如果既想要唯一,又想要性能,可以考虑:

  1. UUID v7(趋势递增,性能更好)
  2. Snowflake ID(Twitter 雪花算法)
  3. ULID
  4. 数据库自增 ID + 业务 UUID

示例:

id BIGINT AUTO_INCREMENT PRIMARY KEY,
uuid CHAR(36) UNIQUE NOT NULL

总结一句话

UUID 在数据库中的作用是提供全局唯一、分布式友好的标识符,特别适合分布式系统和对外暴露的数据,但性能和存储空间不如自增 ID。

如果你愿意,我可以:

  • 帮你设计数据库主键方案
  • 对比 MySQL / PostgreSQL / MongoDB 中 UUID 的最佳实践
  • 推荐合适的 UUID 版本
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI