は、2つの単純なアイデア、紙基準です。例えば、N = 5、及びカウンタの初期値が1である場合、クライアントは、A、B、及びCは、以下になるだろう:これは、原子カウンタの圧力を低下させる一方で、
A: [1, 2, 3, 4, 5]
B: [6, 7, 8, 9, 10]
C: [11, 12, 13, 14, 15]
のように我々この例では、クライアントCのような一部のクライアントは比較的高い範囲のIDを取得し、他のクライアントは低い範囲のクライアントAを取得し、これによりシステムの中断率が高くなります。
2)インターリーブされたトランザクション識別子の範囲を使用してください。これは1に似ていますが、ステップ変数Sを追加しました。単純な例です:N = 5、S = 3でカウンタの初期値が1の場合、クライアントABとCは次のようになります。今、私たちが戻っ溶液#1が持っていた同じ問題にしている
D: [16, 19, 22, 25, 28]
:
A: [1, 4, 7, 10, 13]
B: [2, 5, 8, 11, 14]
C: [3, 6, 9, 12, 15]
はこれが1の問題を解決しますが、クライアントDを検討しているようです。トリックはこのテクニックを使って "正しい"ことをする必要があります。トランザクションIDを割り当てる
3)おもしろいが、より複雑な、分散型の方法がここで説明されています
火、スティーブン、Wenting鄭、エディー・コーラー、バーバラ・リスコフ、そしてサミュエル・マッデン。 「マルチコア・インメモリ・データベースにおける迅速なトランザクション」オペレーティングシステムの原理に関する第24回ACMシンポジウム議事録、pp。18-32。 ACM、2013.