UUID(通用唯一识别码,Universally Unique Identifier)在数据库中的主要作用是为数据记录提供全局唯一的标识符。与传统的自增主键(如 AUTO_INCREMENT 的 INT 或 BIGINT)相比,UUID 有自己独特的应用场景和优缺点。
下面从作用、优势、缺点和使用场景几个方面说明。
UUID 的核心作用是保证每条记录在分布式系统中唯一,即使在多个数据库实例、多个服务器、甚至多个系统中生成,也不会发生冲突。
例如:
UUID: 550e8400-e29b-41d4-a716-446655440000
在传统自增 ID 中:
UUID 可以在应用层或任意节点生成,适合:
自增 ID 是连续的:
1, 2, 3, 4, 5
容易被推测:
UUID 是随机的:
a3f5c9e2-8b1d-4c6a-9f21-32ab12cd8741
安全性更高,适合对外暴露的主键。
UUID 可以在:
就已生成,适合:
| 版本 | 说明 |
|---|---|
| UUID v1 | 基于时间戳 + MAC 地址(可能泄露机器信息) |
| UUID v4 | 完全随机(最常用) |
| UUID v7 | 基于时间戳 + 随机数(趋势递增,数据库更友好,推荐) |
占用空间大
BIGINT(8 字节)大一倍索引性能较差
可读性差
| 对比项 | UUID | 自增 ID |
|---|---|---|
| 唯一性 | 全局唯一 | 单库唯一 |
| 分布式 | ✅ | ❌ |
| 安全 | ✅ | ❌ |
| 性能 | ❌ | ✅ |
| 占用空间 | 大 | 小 |
| 可读性 | 差 | 好 |
如果既想要唯一,又想要性能,可以考虑:
示例:
id BIGINT AUTO_INCREMENT PRIMARY KEY,
uuid CHAR(36) UNIQUE NOT NULL
UUID 在数据库中的作用是提供全局唯一、分布式友好的标识符,特别适合分布式系统和对外暴露的数据,但性能和存储空间不如自增 ID。
如果你愿意,我可以:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。