![]() |
1
5
可能有点离题,但请看一下 Twitter's snowflake . 他们说是:
更不用说其他功能(HA等)。你要么刻划他们的算法,要么就按原样使用它。 整个uid最多只占用64位空间,因此我想索引是非常有效的-请参阅 http://www.mysqlperformanceblog.com/2006/10/03/long-primary-key-for-innodb-tables/ (反例)。 |
![]() |
2
3
我认为你可能需要更具体地说明你要解决的问题(实际问题是什么-为什么不自动增加?,您建议的模式是什么?等等)。 要回答您的内部问题:
不按顺序插入的风险至少有两倍:
所以,我认为只要您大致是连续的,那么至少(1)不需要考虑主键索引(对于任何唯一索引都可能是这样)。你只需要担心(2)。 我为什么说理解这个问题很重要,是除了长相外还有很多方法可以做到这一点。例如,MySQL中的bigint比您可能使用的任何数据类型都要小,但其范围为18 Quintillion。您可以一次为工作节点分配N千个密钥空间的“块”,并保证不重复。如果一个工作节点崩溃,并且没有使用它分配的所有块,那又是什么呢?没关系。 |
![]() |
3
2
|
![]() |
4
1
我要做的是使用一个固定宽度的字符字段,并将一个随机的UUID字符串垂直于当前时间(毫秒)。这很好,因为即使您的服务器在同一毫秒内被访问两次,它仍然(可能)是唯一的。我想如果你有 大量的 服务器加载这可能会提供多个ID,但如果担心这一点,您可以检查是否已经创建了具有此UUID的行。 PHP:
这是我在(很少使用)服务器上使用的。但对于更大的负载来说,它应该能够承受更大的负载。如我所说,为了克服创建两个相同的键的微小可能性,请检查它是否已被使用,并分配一个新的键。(这种情况不应该太频繁) |
![]() |
Lechucico · BLE从特性接收GATT通知 7 年前 |
![]() |
Baek Ryun · 核心蓝牙使用数据创建CBUUID 7 年前 |
![]() |
Jacob Boddey · 在PHP中从MongoDB获取UUID 7 年前 |
![]() |
xiekuan · 如何在C中打印ext2超级块的s_uuid 7 年前 |
![]() |
Alex · 如何在python中生成相同的uuid序列?[副本] 7 年前 |
![]() |
Basil Bourque · java.util。UUID实习/回收 7 年前 |
![]() |
Arivazhagan L · 如何在Java中创建唯一Id 7 年前 |