数据库主键选择的一些方案比较
数据库中每一条记录都需要有一个唯一的标识,一般来说有两种选择方式:
-
使用业务字段做主键
很多情况下很难找到一个业务字段是唯一标识
业务字段长度有可能改变 -
使用自动生成的唯一ID作为主键
- 唯一性,生成就不会变更,可以随意引用
- 单库单表场景下:
- 自增字段作为ID
- 分库分表场景下:
- UUID
1.一般用来生成Request ID来标记单次请求
2.生成的ID最好具有单调递增性,也就是有序,而UUID不具备这个特点,ID有可能成为排序字段
3.ID有序也会提升数据的写入性能(B+树存储索引,顺序写入不需要寻道)
4.不具备业务含义,UUID无意义
5.32个16进制数字组成,比较耗费空间 - 搭建发号服务来生成ID
Snowflake 算法,简单易实现,全局唯一、单调递增,还包含一定的业务意义- 嵌入到业务中,分布在业务服务器中
- 部署独立的发号器服务
- UUID

浙公网安备 33010602011771号