【发布时间】:2017-04-11 19:29:43
【问题描述】:
我知道在 PostgreSQL 中,如果您使用自动生成的主键,它们可能会不同步(这会阻止您插入新行,因为自动生成的 ID 已经存在于主键中)。
这是 CockroachDB 中的问题吗?我想这可能是因为它是分布式的,并且没有简单的方法来检查主键中使用的现有值。
【问题讨论】:
标签: cockroachdb
我知道在 PostgreSQL 中,如果您使用自动生成的主键,它们可能会不同步(这会阻止您插入新行,因为自动生成的 ID 已经存在于主键中)。
这是 CockroachDB 中的问题吗?我想这可能是因为它是分布式的,并且没有简单的方法来检查主键中使用的现有值。
【问题讨论】:
标签: cockroachdb
幸运的是,CockroachDB 自动生成的主键(称为SERIAL)没有遇到这个问题。它通过使用时间戳和执行插入的节点的 ID 生成一个整数来实现这一点。除了极端情况外,这种组合可能是全球唯一的。
因为此值是唯一的(极少数情况除外),您不必担心插入会因为自动生成的主键而被拒绝。它也不会卡住,因为每次尝试都会生成一个新值。
附注:在分布式系统中生成SERIAL 值的执行速度也比AUTO INCREMENT 之类的更快,因为它不需要节点相互协调。
【讨论】: