数据库序列:为什么递增不是 1?

Database sequences: Why incrementing by other than 1?

我想知道,为什么你应该使用 increment by 不是“1”的东西。

我知道,序列可能有间隙,例如因为缓存,但这不是我现在要问的。我想知道,为什么最好使用

create sequence SEQ start with 1 increment by 20

而不是

create sequence SEQ start with 1 increment by 1

Oracle,我认为,例如使用20的增量,JPA(Java持久性API)定义的序列默认为50的增量。

感谢您的回答!亲切的问候!

我知道的目的是,如果你有一个数据集存储在 20 个数据库服务器上。如果它们每个递增 1,它们将生成相同的值,并且如果您需要合并数据将很难。

如果这 20 个服务器中的每一个都递增 20,并且每个服务器都以不同的偏移量开始,那么它们都会分配不同的 ID。因此,如果您需要为报告合并它们,或者在重建您的服务器集时,您不会有冲突。