大家的数据库主键 ID 是用什么?

2020-04-23 10:43:35 +08:00
 zealinux
  1. 自增长的 Long 或 Int
  2. UUID
  3. 自己代码生成插入 String

或者其他更好的方案


我喜欢用 UUID,这样每次合并数据时没那么痛苦。

5288 次点击
所在节点    数据库
39 条回复
wellsc
2020-04-23 14:27:42 +08:00
@Veneris 美团的 leaf 了解一下
gemini767
2020-04-23 14:29:57 +08:00
自增 id uuid 是全局唯一 id 俩不一回事,不冲突
keshawnvan
2020-04-23 14:44:00 +08:00
cigarzh
2020-04-23 15:29:44 +08:00
snowflake
Eirxxx69
2020-04-23 15:45:34 +08:00
不考虑性能和数据量,用啥都行
Kenyore
2020-04-23 15:54:04 +08:00
UUID 多舒服。
xuanbg
2020-04-23 16:07:40 +08:00
@FanError 对的,确实性能不好,但我们的业务每天新增的数据都是以百千计而非百万千万计……所以我就不管他性能好不好了,只要用的方便就好。真香
creatdate
2020-04-23 16:26:11 +08:00
UUID,因为同时插多张表,UUID 一致正好可以关联,单表就随便,自增比较方便。
sunmoon1983
2020-04-23 19:19:08 +08:00
@jzmws 雪花是很香,但是需要把数据交给 js 的时候就不香了,还需要转成字符串
ck65
2020-04-23 20:00:51 +08:00
自增和雪花并存。还蛮香的。
beginor
2020-04-23 20:32:47 +08:00
雪花 ID
guoziyan
2020-04-23 20:55:18 +08:00
说用 UUID 的,都没想过大的主键导致索引树高度的膨胀而导致查询性能的下降,同时 UUID 的随机写导致索引节点的不断分裂合并所带来的影响吗?
通常来说,在数据行 1k 大小的时候,一个三层的索引,主键使用 bigint,可以存储大约 2200w 的数据,如果是 int 的话,则能存储 4000w 左右的数据, 而 uuid 只能存 250w 左右的数据。
PopRain
2020-04-23 21:29:58 +08:00
@guoziyan 1.uuid 有升序方案 2.看应用场景,大部分应用的索引不会很在意你说的性能区别,只是心理上的差别
huobazi
2020-04-23 21:35:36 +08:00
snowflack
MarsBar
2020-04-24 07:17:44 +08:00
uuid v5 hash 某些字段 然后拿来当主键。。
guoziyan
2020-04-24 08:32:46 +08:00
@PopRain 如果对性能没有吹毛求疵要求的话,也不是不能接收。
sprit
2020-04-24 09:39:32 +08:00
主键自增 业务 ID snowfalck
MOONLIGHTT
2020-04-24 10:58:57 +08:00
分布式用雪花,单机用自增 id
yeqizhang
2020-04-24 11:36:14 +08:00
@creatdate 一对一主键关联我见过用 int 的……

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/665250

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX