a8022017/03/05 21:53回答ありがとうございます! そのSQLは試してみたのですが、CACHEの値ごとに飛ばされて表示され、上手く表示されないのです。 例えばスタート値100、増分値1、CACHE20の場合、 NEXTCACHEFIRSTVALUEに101~120が表示されてほしい時は120が表示され、 NEXTCACHEFIRSTVALUEに121~140が表示されて欲しい時は140がずっと表示される、 といったような感じです。 伝わりますでしょうか・・・? この問題の対処方法も教えて頂けると幸いです。 宜しくお願いします。
SVC342017/03/06 01:53 編集DB2は1回目のNEXT VALUE要求に対して、CACHEで設定された分の連番をまとめてメモリ上にキャッシュします。この時、NEXTCACHEFIRSTVALUEもCACHEの分一度に増加します。2回目以降のNEXT VALUE要求では払い出し済みのキャッシュが使用されますが、そのうちどこまでを実際に使用したかはNEXT VALUEを要求しなければ分かりません。しかし、NEXT VALUEを要求すると番号が新たにひとつ使用済みになってしまいます。PREVIOUS VALUE要求でも、これで確認できるのは1コネクション内で最後にNEXT VALUEで取得した値です。 本当にどこまで採番されたかをトラッキングする必要がある場合は、CACHEオプションをNO CACHEに変更してください。ALTER SEQUENCEでも変更可能です。NO CACHEであれば、常にNEXTCACHEFRISTVALUE - 1が最後に払い出された番号になります。ただし、NO CHACHEでもNEXT VALUE要求したトランザクションがROLLBACKした場合、払い出された番号は再使用されないため、その部分は歯抜けになります。 一見不便に見えますが、これらはシーケンスオブジェクトのスループット向上とのトレードオフになっています。これらが許容されない場合は、シーケンスオブジェクト以外の手段(採番用テーブル等)を検討してください。 シーケンスの設計 https://www.ibm.com/support/knowledgecenter/ja/SSEPGG_11.1.0/com.ibm.db2.luw.admin.dbobj.doc/doc/t0023352.html
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/05 21:53
2017/03/06 01:53 編集