postgres 9.0.4序列跳过数字

时间:2014-01-25 21:17:50

标签: spring hibernate postgresql jpa

我们正在使用hibernate,jpa和spring,我们的db是postgres 9.我们使用sequence来自动生成主键。但是我们注意到,当在表中插入新记录时,它会跳过20个数字,并且在我们的序列中,我们将增量加1,然后为什么postgres将下一个值递增到20.我们确实使用缓存值为“20”。 / p>

1 个答案:

答案 0 :(得分:0)

这是正常的。您可以告诉Hibernate不要缓存序列值 - 性能成本为insert - 但并不意味着您不会有序列间隙。

I wrote more about this on an older answer - here

序列有差距。这是他们的本性。如果它们没有间隙,您一次只能插入一个事务。

请参阅:

了解详情。

如果您期望无间隙序列,则需要了解您必须按顺序执行所有插入操作,一次只能处理一个事务。要了解更多信息,请搜索“postgresql gaples sequence”。依靠DB中的无间隙序列通常是一个坏主意;相反,让你的应用程序在使用row_number()窗口函数或类似函数获取值时构造用户可见的值。

相关: