我在我的数据库中使用 Guids 作为主键,并且想知道是否有可能生成重复的 Guid。指南是否保证是唯一的?
问问题
530 次
3 回答
4
虽然不能保证每个生成的 GUID 都是唯一的,但唯一键的总数(2^128 或 3.4×10^38)是如此之大,以至于生成两次相同数字的概率非常小。例如,考虑可观测宇宙,它包含大约 5×10^22 颗恒星;然后,每颗星都可以有 6.8×10^15 个普遍唯一的 GUID。
来自维基百科。
于 2012-06-21T10:41:11.823 回答
1
如果您使用 NEWSEQUENTIALID() 生成它们,则它们保证是唯一的。尽管如此,微软声称 [1] 它将是独一无二的,并且
世界上没有其他计算机会生成该 GUID 值的副本。
维基百科指出[2]
Microsoft 在 Transact-SQL 语言中添加了一个名为 NEWSEQUENTIALID()[8] 的函数,该函数生成的 GUID 值保证会增加,但在服务器重新启动时可能以较小的数字开始(仍然保证唯一)
简而言之:在实践中,它们将是独一无二的。
[1] http://msdn.microsoft.com/en-us/library/ms190215(SQL.105).aspx
[2] http://en.wikipedia.org/wiki/Globally_unique_identifier#Sequential_algorithms
于 2012-06-21T10:44:26.730 回答