使用 UUID 作为主键时优化 PostgreSQL 性能

Obv*_*uit 4 postgresql uuid database-performance

我是数据库新手,一直在考虑使用 UUID 作为我的项目中的主键,但我阅读了一些内容,这让我有兴趣了解更多有关性能的信息。

目前,我正在使用该uuid数据类型,默认值设置为gen_random_uuid().

首先,我想知道:UUID 作为主键性能会降低吗?

如果是这样...

  • 是否有任何优化它的技巧,例如,如果 PK 是连续的,但另一个字段包含 UUID(专门用于公开曝光),会有帮助吗?
  • 是否有类似的替代方案可能性能更高?

(我还没有处理任何相当规模的数据;这更多的是一个理论问题。)

Lau*_*lbe 8

UUID 比序列生成的密钥慢。你只能接受这一点,没有其他办法。因此,只有在有令人信服的理由时才使用 UUID,例如密钥是在数据库外部生成的或者需要在多个数据库中保持唯一。

我的文章对此进行了一些更深入的讨论。