使用UUID-PostgreSQL数据类型可以解决性能问题吗?[关闭]

knsnq2tg  于 2023-11-18  发布在  PostgreSQL
关注(0)|答案(1)|浏览(151)

已关闭。此问题为opinion-based。目前不接受回答。
**要改进此问题吗?**更新此问题,以便editing this post可以使用事实和引文来回答。

13天前关门了。
Improve this question
我读过很多关于“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无法猜测。

dvtswwa3

dvtswwa31#

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

  • 生成UUID比对序列进行计数要慢,
  • uuidbigint占用更多的存储空间
  • 最重要的是,UUID上的主键索引在INSERT s期间永远不会执行得很好,需要更多的I/O,并且不会那么密集

但是,所有这些性能上的缺点与您的其他处理(网络延迟、客户端应用程序处理等)相比可能都相形见绌。
我的经验法则是:如果因为在分布式系统中或数据库外部生成主键而需要UUID,那么就这样做。如果没有令人信服的理由使用UUID,那么就使用标识列。

相关问题