私はこれについてできるだけ詳しく説明しようとします。高トランザクション環境で数値の範囲を増やす最も良い方法は何ですか、つまり、呼び出しはWeb APIから非常に速く来ますか?重複のない範囲のSQLインクリメント - マルチスレッド
私が最初に持っているテーブルは、使用可能な範囲のマスターテーブルです。それは以下のとおりです。私はこれがどちらかを実装する最善の方法であるかどうかはわかりませんので、私は提案に開放しています
A社は最初私に100-200の範囲を与えました。時間の経過とともに、私たちは低水準になり始めて、新しい範囲を与えました。新しい範囲は201-300です。
Company Range Inactive
A 100-200 X
B 100-200
C 200-350
A 201-300
第2のテーブルは、範囲間で使用された番号のリストです。
Company Number DateUsed
A 198 2017-11-30
B 199 2017-11-30
A 200 2017-11-30
B 105 2017-11-30
C 215 2017-11-30
A 201 2017-11-30
範囲が使い果たされたら、私はそれはもう使用されていないので、その範囲外のフラグのことができるように、そして利用できる次の範囲を使用する必要があります。私は、最初のテーブルに "Last Used"の数字を追加して、空の場合は非アクティブにすることを非アクティブにするcase文を含む出力でUpdateステートメントを実行することを考えていました。
私が持っている質問は、高いトランザクション環境でこれを行うための最良の方法は何ですか?私はScope_Identity
に精通していますが、この設定ではうまくいかないと思います。
範囲の列を2つの列に分割できますか?たとえば、「RangeLow」と「RangeHigh」です。もしそうなら、この問題をより簡単にするでしょう。リレーショナルデータベースを適切に構築するための重要な機能として、テーブルを「アトミック」にすることもできます。 –
はい、範囲を分割することはprobではありません。それが私がそれを普通にやる方法です。これはほんの一例でした。 –