5

私はまだ Mnesia で何ができるかを深く理解しようとしていますが、これら 2 つの質問への回答が大いに役立ちます。

1) あるプロセスがレコード X に関してアトミック トランザクションを実行し、他のプロセスが同じレコードを含むダーティ トランザクションを実行するとどうなるか。最初のプロセスの ACID プロパティは侵害されていますか?

2) 同じプロセスが 1 つのテーブルの行で非ダーティ (mnesia:transaction/1) 読み取りロックを保持し、同時に別のテーブルでダーティ操作を実行する方法はありますか?

4

1 に答える 1

1

Mnesia のように、ダーティ オペレーションを許可するデータベース環境では、分離の保証が失われます。したがって、質問 1) に対する答えは「はい」です。行儀の良いトランザクション プロセスは、同時実行されるダーティ オペレーションによって損なわれる可能性があります。また、その逆も同様です。ダーティライトは明らかです。

2 番目のシナリオでは、2 つの理由から答えは「はい」です。読み取り中のデータ オブジェクトのみがロックされており、ローカル コピーのみがロックされています。これは一般的には優れた便利な機能であり、他のデータ オブジェクト (もちろん他のテー​​ブルを含む) で同時トランザクションを実行することもできます。

Erlang Mnesia ドキュメント、第 4 章

于 2012-11-10T06:18:11.100 に答える