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

Ich revidiere für eine Prüfung und das sind eine der Fragen, die ich auf dem Mock-Papier überblickt habe.Ist das serialisierbar?

Gemäß dem Markierungsschema lautet die Antwort, dass die Transaktion serialisierbar ist. Aber ich verstehe einfach nicht wie.

T1 und T2 werden in einem Zyklus gefangen, wenn T1 auf T2 zeigt und dann auf T1 in einem Präzedenzdiagramm zeigt, wodurch es nicht serialisierbar wird. Ist die Markierung falsch oder fehlt mir hier etwas?

+1

Tag: "Serialisierung ist der Prozess, mit dem ein Objekt in ein Format konvertiert wird, das gespeichert und später abgerufen werden kann." – Barmar

+0

das ist mein Fehler :). – UmNyobe

Antwort

1

Ich denke, das Wichtigste hier ist, dass T1 abbrechen. Wenn ich mich nicht irre, bis eine Transaktion festgeschrieben wird, kann man davon ausgehen, dass die Platte nicht modifiziert wurde. Das heißt, wenn T1 abbricht, war der Zustand der Datenbank derselbe wie wegen dieser Abfolge von Operationen. Und das ist der T2 wird angezeigt.

Wenn wir also

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) 

hatten Dann wird der Zustand der Datenbank und der Transaktionen T2 wird das gleiche wie die in Ihrem Beispiel. Nun, wenn T1 festgeschrieben wurde, werden Sie korrekt sein, indem Sie den Vorranggraphen hervorheben.

+0

Danke, sehr geschätzt. – user2212485

Verwandte Themen