使用UUID-PostgreSql数据类型是否可以解决性能问题?

问题描述 投票:0回答:1

我读过很多关于“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 无法被猜到。

postgresql primary-key uuid
1个回答
0
投票

我在您链接到的文章中没有看到任何反对 UUID 的严肃论据。就性能而言:

  • 生成 UUID 比计算序列要慢

  • uuid
    bigint

    需要更多的存储空间
  • 最重要的是,UUID 上的主键索引在

    INSERT
    期间永远不会表现得那么好,需要更多 I/O 并且不会那么密集

但是所有这些性能缺点可能与您的其余处理相比相形见绌:网络延迟、客户端应用程序处理等。所以不要太担心。

我的经验法则:如果您因为在分布式系统中或数据库外部生成主键而需要 UUID,请这样做。如果您没有令人信服的理由使用 UUID,请使用身份列。

© www.soinside.com 2019 - 2024. All rights reserved.