2016-07-14 15 views
1

MVCCスナップショット分離のデータベースタイムスタンプを生成する必要があります。一般的方法使用:。同時データベースMVCCタイムスタンプ生成方法

次のように「トランザクションアクションはSI-TMで実装され

TMは、BEGIN:トランザクションの論理スナップショットは、グローバルタイムスタンプカウンタ原子インクリメント を使用して一意のタイムスタンプを取得することによって 生成されます。 "

何百ものコアを持つシステムでこのアプローチを使用する際の問題は、拡張性がないことです。競合するメモリ位置には、1秒当たり10Mアトミック・インクリメントのハードウェア制限があります。

アイデア?

1)の代わりに1だけカウンタをインクリメントのクライアントにトランザクション識別子[C、C + N)の有効範囲を与える、Nによってそれを増加、:ここ

答えて

0

は、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.

関連する問題