使用UuidCreateSequential / NewSequentialID的碰撞奇数

时间:2014-07-22 22:02:18

标签: sql-server guid

使用UuidCreateSequential或其包装NewSequentialID时发生碰撞的几率是多少?我发现顺序guid最具体的是#34;比随机guid"更可能。

将它与随机指南比较,版本4 - 其中有大量有趣的统计数据:

  • 70万亿Guids的碰撞几率为0.0000000004%。与被陨石撞击的年度几率相同(wiki
  • 每年产生100万个guid的10亿台PC在7万年后碰撞的几率很高(lipper, guids part 3
  • 2,600,000,000,000,000,000代产生1%的碰撞机会

但亲爱的旧顺序指南呢?他有趣的统计数据在哪里?如果相关,假设现代版本的SQL - 比如2012/2014和Windows 2008或2012。

1 个答案:

答案 0 :(得分:1)

除非您正在做一些愚蠢的事情,比如没有在您的服务器中使用网卡(或明确设置MAC地址并复制macaddrs),否则您将无法获得重复数据。如果您没有网卡,那么guid对于该计算机将是唯一的。

请仔细阅读ms documention page

"使用NEWSEQUENTIALID()生成的每个GUID在该计算机上都是唯一的。仅当源计算机具有网卡时,使用NEWSEQUENTIALID()生成的GUID在多台计算机上才是唯一的。"

你必须稍微阅读这些内容,但如果你不做愚蠢的事情,它们确实是独一无二的。

添加评论

有一个明显的警告,MS文档可能有误。但证明,如果你必须通过生成副本来取消,可能需要很长时间。完全有可能ms不使用生成现代guid并且可能暴露底层的mac地址。我似乎错放了源代码的代码,无法检查。 : - )