作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我以前见过很多情况,PK 是没有默认值的 Guid,因此开发人员会生成随机 Guid 并使用它们插入数据库。
我经常想知道他们生成一个已经存在的数字的可能性有多大?
最佳答案
一些信息:16个字节可以容纳的值的数量是2^128。
总计 = 可以表示的总值数
实际 = 已使用的值数
将 ID 插入到已存在的表中的概率可以表示为:
1 -(总计 - 实际)/总计
我已经做了一些初步的计算,并得出以下结论:
假设你有一个表,表中已经有 1000 万条记录,那么概率是
1 - (2 ^ 128 - 10,000,000)/2 ^ 128
大概是
0.00000000000000000000000000000003
我想现在我知道为什么这么说了:
“虽然不能保证每个生成的 GUID 都是唯一的,但唯一键的总数如此之大,以至于相同数字被生成两次的概率无穷小”
关于database - 预先生成一个 Guid 并将其作为主键插入到表中有多安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/829244/
我是一名优秀的程序员,十分优秀!