0
我使用postgres和休眠,我注意到我的生成的id奇怪的東西。這使得巨大的跳躍序列中,我有一個表1524行,最高尚的ID爲602778.休眠和postgresql bigserial - 非順序
我的id列的定義是這樣的:
id bigserial
,並通過nextval('my_id_seq'::regclass)
my_id_seq
的起始值爲1並且增量爲1,並且在通過SQuirreL調用nextval時會很好地遞增。
在我的Hibernate的實體,標識映射是這樣的:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
什麼會導致在ID序列,突然跳躍(在一個點從4152跳到12041)?
'SERIAL' PostgreSQL中的類型和序列已知包含缺口(由於他們的世代高於任何事務 - 所以生成的值永遠不會回滾)。但統計上,這種巨大的跳轉不能由回滾事務引起(只有當您的應用程序有一些嚴重的錯誤,它試圖產生許多實體但失敗 - 但我認爲這是不太可能的) – pozs
這是在一個測試環境中,一個定期運行的進程。有足夠的失敗項目和一些時間可以解釋它。檢查生產,並沒有那麼糟糕,9716行,最大ID是43083.無論如何,我已經修復了導致嘗試失敗的事情作爲另一項任務的一部分,希望不會有更多的差距。 – Tobb