2012-01-06 1 views
0

テーブルシーケンシングを使用するアプリケーションがあります。毎回サーバーをバウンスするたびに、テーブル内のシーケンス番号(ここではSEQ_R)が異常な動作をします。シーケンス番号は90000ずつ増加し、時には50ずつ増加します。どこで、増分は1であるべきですか。事前割り振りサイズでのトークループシーケンスのジャンプ

私はMSSQlサーバを使用することを言及する必要があります。

事前割り当ての全体的なアイデアは、TopLinkは80000で、データベース内のシーケンスをインクリメントすることで、カウンタを維持し、当社のmappings.xmlで

<sequencing> 
    <default-sequence xsi:type = "table-sequence"> 
    <name> Custom </name> 
    <preallocation-size> 80000 </preallocation-size> 
    <table> SEQ </table> 
    <name-field> SEQ_N </name-field> 
    <counter-field> SEQ_R </counter-field> 
    </default-sequencing> 
</sequencing> 

<toplink:sequencing> 
    <toplink:default-sequence xsi:type = "toplink:native"> 
    <toplink:preallocation-size> 80000 </toplink:preallocation-size> 
</toplink:default-sequence> 
</toplink:sequencing> 
+0

を参照してください。 – user1076285

答えて

1

当社のsessions.xmlで新しいIDを必要とする次の80000個のアイテムのメモリに保存します。サーバーをバウンスすると、メモリー内のカウンターが失われ、次のバッチのためにトップリンクが読み取られ、データベースのシーケンスが再び更新されます。

実際に1ずつ増分したい場合は、MSSQLでIDENTITYカラムを使用できます。 Toplink Native Sequencing With a Non-Oracle Database Platform

+0

しかし、私たちの組織では、ID列はトップリンクによってサポートされていません。 – user1076285

+0

私は心配しないでください:-)。実際には、生成されたIDが異なる限り、それは大丈夫です。 1ずつ増分する必要はありません。 – greyfairer

関連する問題