题
我见过 GUID Collisons 讨论,但只是想知道如果两个客户端访问完全同时生成GUID的同一网页(可能是微秒),是否可能存在GUID冲突?
解决方案
这在理论上是可行的,但极不可能。
其他提示
没有。如果发生这种情况,请赶紧购买彩票!
在单个服务器上,不,这是不可能的。版本4 Guids由伪随机54位值组成(除此之外),据我所知,它们在重复之前循环遍历所有值。
如果在多个服务器上创建,则可能会发生guid冲突,尽管这种情况极不可能发生。
请参阅 RFC 4122 ,特别是第4.1.5节。现代Windows使用v4 UUID,我相信。
全球唯一标识符或GUID(发音为&ˈ guːɪ d /或/ˈ gwɪ d /)是一种特殊类型的标识符,用于软件应用程序中命令提供在任何上下文中唯一的引用号(因此,“全局”),例如,在为软件应用程序中的某种类型的访问点定义内部引用时,或者用于创建数据库中的唯一键。 虽然不保证每个生成的GUID都是唯一的,但是唯一键的总数(2128或3.4× 1038)是如此之大,以至于两次生成相同数字的概率非常小 。例如,考虑可观察的宇宙,其中包含大约5× 1022颗恒星;然后,每个星星都可以拥有6.8× 1015个通用唯一的GUID。
如果您生成了大量的GUID,那么由于 生日悖论 。理论上GUID碰撞应该是极不可能的(天真的直觉),但实际上它不时发生。
当然,以编程方式处理这些冲突是浪费时间,但你仍然应该以一种方式编写代码,如果它发生,那么你的代码应该大声失败,而不是安静地检测不到。
不隶属于 StackOverflow