我知道在 PostgreSQL 中,如果您使用自动生成的主键,它们可能会不同步(这会阻止您插入新行,因为自动生成的 ID 已经存在于主键中)。
这是 CockroachDB 中的问题吗?我想这可能是因为它是分布式的,并且没有简单的方法来检查主键中使用的现有值。
我知道在 PostgreSQL 中,如果您使用自动生成的主键,它们可能会不同步(这会阻止您插入新行,因为自动生成的 ID 已经存在于主键中)。
这是 CockroachDB 中的问题吗?我想这可能是因为它是分布式的,并且没有简单的方法来检查主键中使用的现有值。
幸运的是,CockroachDB 自动生成的主键(称为SERIAL )没有遇到这个问题。它通过使用时间戳和执行插入的节点的 ID 生成一个整数来实现这一点。这种组合可能是全球独一无二的,除非在极端情况下。
因为该值是唯一的(极少数情况除外),所以您不必担心插入会由于自动生成的主键而被拒绝。它也不会卡住,因为每次尝试都会生成一个新值。
附注:生成SERIAL
值也比AUTO INCREMENT
在分布式系统中执行得更快,因为它不需要节点相互协调。