我应该使用 UUID 还是其他什么?
Should I use UUID or something else?
我经常有一个任务,我需要收集一个对象,我需要在保存到数据库 (PostgreSQL) 之前知道它的 ID。
我可以用 UUID 做到这一点,但它有很多缺点:
- 选择或包含
时性能下降
- 连接性能较差
- 需要更多 space
所以问题是: 我怎样才能预先为对象生成一个 ID 并最大限度地减少 UUID 的负面影响?
您可以使用任何编程语言中的任何 uuid 生成器来执行此操作。我建议在 PostgreSQL 中使用 uuid 类型,以避免需要太多关于 space 或加入的开销。 PostgreSQL 也不包含生成它们的方法,因此您必须先生成它们。
您可能 运行 遇到的一个主要问题是,对于数字 id,许多事情相对容易,但对于 uuid 却成为一个更大的问题。其中包括:
- 输入标识符
- 选择在相似时间插入的一系列记录(因为数字 ID 是连续的)。
不过如果你在PostgreSQL中使用UUID类型,选择和连接性能应该不会太差。而你如何生成 UUID 取决于你作为程序员
我们在一个项目中遇到了这个问题。我 运行 一些测试(大约 400 万行,如果我没记错的话)表明与 int 相比,uuid 并没有真正严重地影响 PG 的性能。使用 uuid 作为主键已有一段时间了,我会毫不犹豫地再次这样做。不过,我必须补充一点,我们还没有看到它在大规模生产中的表现如何。
看看这个:http://www.codeproject.com/Articles/388157/GUIDs-as-fast-primary-keys-under-multiple-database
使用 uuid 的好处是您永远不必担心冲突。不好的事情:如果您手动输入测试查询,它们会有点麻烦。
如果您最终根据大量 uuid 列表进行选择,请使用此技巧:https://www.datadoghq.com/blog/100x-faster-postgres-performance-by-changing-1-line/
希望对您有所帮助,
亚当。
当然,UUID 应该在比整数低的性能下工作,问题在于数据量。说实话,4M的数据量太小不好说会不会有性能问题,当然如果要求image数据量还是小于4M,那也是可以的。
在文档 https://rclayton.silvrback.com/do-you-really-need-a-uuid-guid 中,它更好地建议了如何以及何时使用 UUID
我经常有一个任务,我需要收集一个对象,我需要在保存到数据库 (PostgreSQL) 之前知道它的 ID。
我可以用 UUID 做到这一点,但它有很多缺点:
- 选择或包含
时性能下降
- 连接性能较差
- 需要更多 space
所以问题是: 我怎样才能预先为对象生成一个 ID 并最大限度地减少 UUID 的负面影响?
您可以使用任何编程语言中的任何 uuid 生成器来执行此操作。我建议在 PostgreSQL 中使用 uuid 类型,以避免需要太多关于 space 或加入的开销。 PostgreSQL 也不包含生成它们的方法,因此您必须先生成它们。
您可能 运行 遇到的一个主要问题是,对于数字 id,许多事情相对容易,但对于 uuid 却成为一个更大的问题。其中包括:
- 输入标识符
- 选择在相似时间插入的一系列记录(因为数字 ID 是连续的)。
不过如果你在PostgreSQL中使用UUID类型,选择和连接性能应该不会太差。而你如何生成 UUID 取决于你作为程序员
我们在一个项目中遇到了这个问题。我 运行 一些测试(大约 400 万行,如果我没记错的话)表明与 int 相比,uuid 并没有真正严重地影响 PG 的性能。使用 uuid 作为主键已有一段时间了,我会毫不犹豫地再次这样做。不过,我必须补充一点,我们还没有看到它在大规模生产中的表现如何。
看看这个:http://www.codeproject.com/Articles/388157/GUIDs-as-fast-primary-keys-under-multiple-database
使用 uuid 的好处是您永远不必担心冲突。不好的事情:如果您手动输入测试查询,它们会有点麻烦。
如果您最终根据大量 uuid 列表进行选择,请使用此技巧:https://www.datadoghq.com/blog/100x-faster-postgres-performance-by-changing-1-line/
希望对您有所帮助,
亚当。
当然,UUID 应该在比整数低的性能下工作,问题在于数据量。说实话,4M的数据量太小不好说会不会有性能问题,当然如果要求image数据量还是小于4M,那也是可以的。
在文档 https://rclayton.silvrback.com/do-you-really-need-a-uuid-guid 中,它更好地建议了如何以及何时使用 UUID