数据库主键、订单号、设备标识里经常见到 32 位十六进制串,这就是 UUID。它为什么能保证全球唯一?各版本有什么区别?本文一次讲清。
UUID 是 128 位的标识符,通常写成 8-4-4-4-12 共 32 个十六进制字符。格式为 xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx,其中 M 表示版本,N 表示变体。
V1 基于时间戳和 MAC 地址,可按时间排序但暴露硬件信息;V4 完全随机,最常用;V3/V5 基于命名空间的哈希,相同输入产生相同 UUID,适合确定性场景。
V4 随机生成 122 位有效熵,理论上碰撞概率极低——生成 10 亿个 UUID 的重复概率约为一亿分之一量级,工程上视为唯一。
UUID 无序,作为数据库主键会导致索引碎片和插入性能下降,高并发写入场景建议用有序 UUID 或雪花 ID。UUID 也不适合暴露给终端用户作为订单号。
是。GUID 是微软对 UUID 的实现称呼,格式和生成逻辑相同。
概率极低但不为零。对绝对唯一性有要求的场景应在数据库加唯一索引兜底。
用在线 UUID 生成器设置数量(如 100 个),一次生成后复制使用,比手写代码快。