2013-05-27 21 views
6
write(T1, balx), read(T2, balx), write(T1, balx), commit(T2), abort(T1) 

私は試験のために改訂しています。これらは私が偽の論文で見てきた質問の1つです。これはシリアル化可能ですか?

Marking Schemeによれば、トランザクションはシリアル化可能です。しかし、私はちょうど方法を理解していない。

T1およびT2は、T1がT2を指しているときにトラップされ、次に優先度グラフでT1にポイントして戻ります。したがって、シリアル化できません。マーキングが間違っているのですか?

+1

タグ: "シリアル化は、オブジェクトを格納して後で取得できる形式に変換するプロセスです。" – Barmar

+0

これは私の間違いです:)。 – UmNyobe

答えて

1

ここで重要なのは、T1が中止されたと思います。です。トランザクションがコミットするまで間違わないと、ディスクが変更されていないと見なすことは安全です。これは、T1がデータベースの状態を打ち切るときは、この操作のシーケンスと同じであることを意味します。そして、これはT2が表示されます。

我々は

write(T1, balx), write(T1, balx), abort(T1), read(T2, balx), commit(T2) 
read(T2, balx), commit(T2), write(T1, balx), write(T1, balx), abort(T1) 

があった場合はこのように、そして、T2データベースのトランザクションの状態はあなたの例では1と同じになります。 T1がコミットしたら、優先順位グラフを呼び出すことで正しいでしょう。

+0

ありがとう、非常に感謝します。 – user2212485

関連する問題