0

PostgreSQL データベースの hibernate_sequence で興味深いことに気付きました。これまで、シーケンス (データベース内のすべてのテーブルで使用されている) は 1 ずつ増加していました。しかし、それはもう当てはまりません。

SELECT nextval('hibernate_sequence');現在、hibernate_sequence は43270の値を示しています43271

ただし、テーブルにデータを挿入すると、シーケンス ID は1872053!

私の人生では、理由を理解することはできませんが、異なる環境間で夜間にデータを転送するために実行しているいくつかのデータベース スクリプトに影響を与えています。

@GeneratedValue(strategy=GenerationType.SEQUENCE)「デフォルトで ID を 50 のブロックに割り当てる HiLo 戦略を使用する」 と宣言している次の記事とは何の関係もないことを願っています。PostgreSQL シーケンスの Hibernate 使用はシーケンス テーブルに影響しません

その場合、シーケンス ID に大きなジャンプが発生するでしょうか? から? 43271_1872053

hibernate_sequence との「切断」があるかのようです。2 番目のイベントを INSERT すると、ID は 1872053 ですが、hibernate_sequence の値は変更されなくなりました (43421 のままです)。

他に考えられる説明はありますか?

ありがとう!


コード例:

@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE)
private Integer id;
4

1 に答える 1

1

次の投稿で説明されていることを経験していると思いますが、これは HiLo アルゴリズムにも関連しています: hibernate oracle sequence generate large gap

于 2012-09-07T13:11:35.800 に答える