2012-05-01 11 views
8

私は、分散データベースの並行性制御にタイムスタンプを使用する利点/短所についていくつか読んでいます。私が読んでいる資料では、タイムスタンプはロックに影響を与える伝統的なデッドロック問題を克服しますが、それでも脆弱な「グローバルデッドロック」の問題が残っていると言います。タイムスタンプが "グローバルデッドロック"の原因となりますか?

このマテリアルは、ローカルグラフの待機グラフにサイクルが存在しないがグローバルグラフにサイクルが存在する状況としてグローバルデッドロックを記述します。

これがどうして起こるのでしょうか?誰かが、タイムスタンプシステムがこの問題の原因となる状況を説明できますか?

答えて

5

これは一例ですが、おそらく最も単純です。我々はABのマシンを持っています。マシンAは、とT2の関係で、T1 < T2のロックを持っています。機械Bは、T3およびT4T3 > T4を有する。

ローカルグラフは、T2がT1を待つ必要があり、T3がT4を待たなければならないということだけです。したがって、ローカルサイクルはありません。しかし今は、T4 < T1と仮定して、T1はT4を待たなければなりません。そして同時に、T2 < T3でT3はT2を待たなければならない。この場合、グローバルにサイクルが存在します。

どのようにそのサイクルが起こりますか?ここでの重要な点は、分散システムで完全な情報を得ることは決してないということです。そこで、後でマシン間の依存関係が存在することを知ることができます。それから、問題があります。

0

タイムスタンプは、マシン上のローカルプロセス間の競合解決を決定するために使用されます。これは、そのレベルのデッドロックを解決する手段を提供します。分散プロセスの場合、お互いを待っている異なるマシン上に2つのプロセスが存在する可能性があります。実際には通常のデッドロックですが、マシン間では発生します。これは「グローバル」デッドロックと呼ばれます。 Imhoタイムスタンプはそこでも使用されるかもしれませんが、確かに実用的ではありません。

http://www.cse.scu.edu/~jholliday/dd_9_16.htm

関連する問題