Guid Uniqueness在不同的机器上

时间:2012-12-28 18:46:46

标签: c# sql-server programming-languages operating-system guid

  

可能重复:
  Is a GUID unique 100% of the time?

阅读Guid上的所有帖子后,我仍然不清楚一件简单的事情:

不同机器生成的Guids也保持其独特性。

我已经阅读过关于单机的guid唯一性,但我仍然不了解不同机器的唯一性

3 个答案:

答案 0 :(得分:12)

人们普遍认为新的随机GUID始终是唯一的。概率地说这不是真的,但产生欺骗的可能性非常小,我们不需要关心它。

生成两个相同guid的几率为5,316,911,983,139,663,491,615,228,241,121,400,000中的1个

因此,如果您在100万台计算机上生成100万个guid,则生成重复的可能性为:5,316,911,983,139,663,491,615,228中的1个

在10亿台计算机上花费10亿个guid,产生欺骗的几率是: 1中5,316,911,983,139,663,491(即5.3 quintillion)。

这些数字不言而喻,你不会产生欺骗。

如果您想知道我在哪里获得这些数字,GUID的值部分是122位。 2 ^ 122是5.3169119831396634916152282411214 x 10 ^ 36

一些更疯狂的人物...... 如果每秒生成100万个guid,则需要168,486,464,147,580,370,470,736年才能在概率上保证重复。

@viggity提到一些guid有48位被mac地址占用,数字仍然是惊人的,因此丢失这些位的可承受性。以上面每秒200万个guid(在同一台计算机上)的例子来说,保证欺骗仍然需要598,584,166年。那是6亿年。这比生命在地球上存在的时间更长。或者如果你是一个年轻的地球创造论者,那至少是地球生命的6万倍。

答案 1 :(得分:4)

GUID“实际上” 普遍 唯一。

  

GUID是一个128位整数(16字节),可以在需要唯一标识符的所有计算机和网络中使用。这样的标识符被复制的可能性非常低。

来自MSDN

答案 2 :(得分:2)

我记得在某个地方听说如果你把IPV4地址空间(32位)可视化为邮票的大小,IPV6(128位)就是我们太阳系的大小。生成一个骗局就不会发生。

此外,如果你有更多可能与两台不同的机器重复相同的机器,因为大多数Guid生成算法会将你的计算机NIC MAC地址嵌入到guid中(它是48位)。虽然有些算法没有嵌入MAC地址,但只是纯粹随机的。见:http://guid.us/

编辑:另一个有趣的比例示例 地球的体积大约是10 ^ 27立方厘米。这意味着地球的整个体积每立方厘米就可以拥有340,000,000,000个指南。这个数字令人难以置信。

或者,地球表面的每个方形纳米尺寸本身可以有大约650,000个guid。