提问人:wuarmin 提问时间:11/3/2023 更新时间:11/3/2023 访问量:51
使用 UUID-PostgreSql 数据类型是否能解决性能问题?[已结束]
Does using the UUID-PostgreSql data type solve performance issues? [closed]
问:
我读过很多关于“uuid 作为主键”的不同意见,我有点困惑。
特别是,这篇文章让我不确定什么是最好的方法:https://tomharrisonjr.com/uuid-or-guid-as-primary-keys-be-careful-7b2aa3dcb439
我的用例:
我有一个文档表,它与文档记录具有 1 到 n 的关联。我想使用 UUID 作为文档表中的主键。我将使用 PostgreSql 数据类型 uuid https://www.postgresql.org/docs/current/datatype-uuid.html
这种数据类型是否解决了这篇文章的性能问题? 对于此用例,是否建议使用 uuid? 这样做的重点只是无法猜测 ID。
答:
1赞
Laurenz Albe
11/3/2023
#1
在您链接到的文章中,我没有看到任何反对 UUID 的严肃论点。就性能而言:
生成 UUID 比计算序列慢
an 比 an 占用更多的存储空间
uuid
bigint
最重要的是,UUID 上的主键索引在 s 期间永远不会表现得那么好,需要更多的 I/O,并且不会那么密集
INSERT
但是,所有这些性能劣势可能与处理的其余部分相比相形见绌:网络延迟、客户端应用程序处理等。所以不要太担心。
我的经验法则是:如果你需要 UUID,因为你在分布式系统中或数据库外部生成主键,那就去做吧。如果没有令人信服的理由使用 UUID,请使用标识列。
评论
uuid
uuid
int
uuid
int