UUID 适合分布式生成唯一标识,哈希适合生成内容摘要,自增 ID 适合数据库内部排序和引用。三者用途不同,不应只因为看起来像一串字符就混用。

UUID 适合生成独立标识

UUID 常用于请求 ID、测试数据、导入批次、外部资源标识等场景。它的优势是不依赖中心数据库,也能在多个系统中降低冲突概率。

随机 UUID 不天然按时间排序,作为高频数据库主键时可能影响索引局部性。需要排序能力时,可以评估数据库策略或使用更适合的有序 ID 方案。

哈希更像内容指纹

哈希摘要由输入内容计算而来,常用于校验文件是否变化、比较文本是否一致、生成缓存键或记录不可逆摘要。相同输入会得到相同摘要。

普通哈希不等于加密,也不适合作为密码存储方案。密码应使用 Argon2、bcrypt、scrypt 或 PBKDF2 这类专门的密码哈希算法,并加入随机盐。

自增 ID 简单但会暴露序列

数据库自增 ID 易读、易排序,也方便内部关联。但它会暴露增长趋势,外部接口直接使用时可能带来枚举风险。

面向用户或开放接口时,可以保留内部自增 ID,同时额外提供 UUID、短码或不可猜测的公开标识。

按用途选择而不是按外观选择

需要分布式唯一值,优先考虑 UUID;需要判断内容是否相同,使用哈希;需要数据库内部顺序和关联,自增 ID 仍然实用。

做方案选择时同时看唯一性、可排序性、可读性、长度、是否可猜测、是否会泄露业务规模,以及数据库索引成本。

立即处理

使用相关工具

常见问题

关于这个问题

UUID 会重复吗?

理论上可能,实际随机 UUID 的碰撞概率极低。关键业务仍应依赖数据库唯一约束做最终保护。

MD5 还能用吗?

MD5 不适合安全场景。它可用于非安全性的快速摘要或兼容旧系统,但不要用于密码、签名或防篡改。