在数据库主键设计中,自增 ID(Auto Increment) 和 UUID 各有适用场景。很多系统在“对外不可见、内部关联用”的场景下更偏向自增,而不直接用 UUID,核心原因可以从性能、存储、可读性、业务安全性、使用场景几个维度来看。
BIGINT(8 字节)➡ 自增 ID 在索引、磁盘、内存上都更省
MySQL / PostgreSQL 等 B+ 树索引:
➡ 高并发写入时,UUID 性能明显更差
user_id = 12345 一眼看懂9f1c2a... 看不出任何信息➡ 日志、联调、运维更友好
常见做法:
UUID 并非不好,而是在特定场景更合适:
✅ 分布式系统(无中心节点生成 ID)
✅ 需要提前生成 ID(离线/客户端)
✅ 多库多表合并,避免 ID 冲突
✅ 对外暴露且不想被猜测
例如:
数据库主键:id (BIGINT AUTO_INCREMENT)
业务对外:order_no (UUID / Snowflake)
自增 ID 是“数据库友好型”主键,UUID 是“分布式友好型”标识。
大部分系统:内部用自增,外部用 UUID 或其他编码 ID。
如果你愿意,我也可以结合你用的数据库(MySQL / PG / MongoDB)和业务类型给你一个具体的主键设计方案。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。