号即使假设极在一些地区的GUID的高使用率,以及极长的时间尺度上,有关的GUID关键的一点是他们的独特之处。一旦您开始以任何具有实际相关性的概率获得重复,人们就会停止使用 GUID,因此不会再使用它们。当然,他们可能会在某些区域使用一些看起来像 GUID 的数字,足够低的使用率仍然可以帮助确保本地唯一性,但那些只是 LUID,如果幸运的话,人们也会这样称呼它们。
要显示2 ^ 128 GUID有多少:
1 GUID = 16 bytes。
因此,2^128将需要2^4 * 2^128 bytes存储GUIDS 。
2^4 * 2^128 = 2^132 bytes
使用Python,我计算出这将花费:
4,951,760,157,141,521,099,596,496,896TB。
因此,首先,您需要担心能够存储那么多GUID,然后再考虑将其耗尽。
基本上:您不可能用完。
正因为我已经多次听到人们担心碰撞的问题,所以我将扩大答案以包括对碰撞可能性的分析。
在average发生冲突之前,您需要的UUID数量为:
2^128 / 2 = 2^127
Run Code Online (Sandbox Code Playgroud)
这意味着,在50%生成2^127GUID时,很可能会发生冲突。为此所需的GUID数量为:
170141183460469231731687303715884105728 GUIDs
Run Code Online (Sandbox Code Playgroud)
如果我错了,请有人纠正我,但是:这意味着产生冲突的可能性非常小,甚至不值得检查数据库中是否已经存在刚刚生成的UUID。
注意:所有这些都假设UUID是使用良好的随机性算法和良好的熵源生成的。
| 归档时间: |
|
| 查看次数: |
672 次 |
| 最近记录: |