1

MVCC スナップショット分離のためにデータベースのタイムスタンプを生成する必要があります。利用される典型的な方法:

「トランザクション アクションは、次のように SI-TM で実装されます。TM BEGIN: トランザクションの論理スナップショットは、グローバル タイムスタンプ カウンターへのアトミック インクリメントを使用して一意のタイムスタンプを取得することによって生成されます。」

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

何か案は?

4

1 に答える 1

0

以下に 2 つの簡単なアイデアと参考文献を示します。

1) カウンタを 1 ずつインクリメントする代わりに、N ずつインクリメントして、クライアントにトランザクション識別子の範囲 [c, c+N) を効果的に与えます。たとえば、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) はより低い範囲の ID を取得します。これにより、中断率が高くなります。システムで。

2)インターリーブされたトランザクション ID の範囲を使用します。これは 1 に似ていますが、ステップ変数 S を追加しました。簡単な例を次に示します。N=5 で S=3 で、カウンターの初期値が 1 の場合、クライアント AB と C は次のようになります。

A: [1, 4, 7, 10, 13]
B: [2, 5, 8, 11, 14]
C: [3, 6, 9, 12, 15]

これで 1 の問題は解決したように見えますが、クライアント D について考えてみます。

D: [16, 19, 22, 25, 28]

ここで、解決策 1 と同じ問題に戻ります。「正しく理解する」ためには、このテクニックを使ってトリックを行う必要があります。

3) トランザクション ID を割り当てる興味深い、しかしより複雑な分散型の方法がここで説明されています。

Tu、Stephen、Wenting Zheng、Eddie Kohler、Barbara Liskov、Samuel Madden。「マルチコア インメモリ データベースでの高速トランザクション。」オペレーティング システムの原則に関する第 24 回 ACM シンポジウムの議事録、pp. 18-32。ACM、2013年。

于 2016-08-03T00:36:58.477 に答える