UUID进阶技巧

53 0

UUID(通用唯一识别码,Universally Unique Identifier)是 128 位的标识符,通常写成 36 个字符的 8-4-4-4-12 十六进制形式,例如 550e8400-e29b-41d4-a716-446655440000,用于在不依赖中央分配的情况下生成几乎不会重复的 ID。下面说明进阶技巧。

UUID进阶技巧

  • 主键用版本 7 减少索引页分裂
  • MySQL 中用 BINARY(16) 存储,PostgreSQL 用原生 uuid 类型
  • 需要可读短 ID 时对外展示 Base58 形式
  • 同一输入需要稳定 ID 时用版本 5
  • 日志中记录请求 ID 便于排查

示例

输入:同一 UUID 的不同写法

生成结果:d1852774-7ce6-4235-a159-e7607e88c2d1 / d18527747ce64235a159e7607e88c2d1 / {D1852774-7CE6-4235-A159-E7607E88C2D1}

说明:标准形式是 8-4-4-4-12 的小写十六进制,也可去掉连字符或写成带花括号的大写形式。

注意事项

  • 版本 4 适合大多数场景,但作为主键插入时会造成 B+ 树索引随机写入
  • 需要排序或高写入性能时考虑版本 7
  • 版本 1 会暴露生成机器的 MAC 地址和时间
  • UUID 不是安全令牌,不要单独用于访问授权
  • 存储时统一大小写,避免比较出错

相关标准

UUID 最早由 RFC 4122 规定,2024 年 5 月发布的 RFC 9562 取代了它,并新增了版本 6、7、8。版本 7 以 Unix 毫秒时间戳开头,兼顾唯一性和时间有序,是目前推荐的新主键方案。微软体系中常称为 GUID,含义相同。

Python 示例

下面是用 Python 实现的写法,可以按需要修改:

import uuid
print(uuid.uuid4())                                  # 随机
print(uuid.uuid5(uuid.NAMESPACE_DNS, 'example.com'))  # 基于名称
print(uuid.uuid4().hex)                              # 无连字符

本站的UUID生成器工具可以直接在网页中使用,无需安装,适合快速得到和核对结果。

常见问题

【UUID 会重复吗?】理论上可能,但版本 4 的碰撞概率极低,实际应用中可以视为唯一。

【UUID 能做数据库主键吗?】可以。关心写入性能时优先选择时间有序的版本 7。

【UUID 区分大小写吗?】不区分,规范建议输出小写,比较时忽略大小写。

文中示例可以在本站对应工具中核对。

署名:123问编辑部 · 最近修订:2026-11-11 · 已按编辑与审核说明检查;内容仅供参考,不构成医疗、法律或投资建议。发现错误可查看纠错方式。

标签: 实用工具

抱歉,评论功能暂时关闭!