CockroachDB 主键会不同步吗?

Can CockroachDB primary keys fall out of sync?

我知道在 PostgreSQL 中,如果您使用自动生成的主键,它们可能会不同步(这会阻止您插入新行,因为自动生成的 ID 已经存在于主键中)。

这是 CockroachDB 中的问题吗?我想这可能是因为它是分布式的,并且没有简单的方法来检查主键中使用的现有值。

幸运的是,CockroachDB 不会 运行 使用其自动生成的主键(称为 SERIAL)解决这个问题。它通过使用时间戳和执行插入的节点的 ID 生成一个整数来实现这一点。这种组合很可能是全球唯一的,除非在极端情况下。

因为这个值是唯一的(极少数情况除外),您不必担心插入会因为自动生成的主键而被拒绝。它也不会卡住,因为每次尝试都会生成一个新值。

旁注:生成 SERIAL 值也比分布式系统中的 AUTO INCREMENT 执行得更快,因为它不需要节点相互协调。