6
write(T1, balx), read(T2, balx), write(T1, balx), commit(T2), abort(T1)
我正在修改考試,這些都是我一直在模擬論文中查看的問題之一。這是可串行化的嗎?
根據標記方案,答案是交易是可序列化的。但我不明白如何。
T1和T2在週期中被捕獲,因爲T1指向T2,然後指向優先圖中的T1,因此不會使其可序列化。標記是否錯誤或我在這裏錯過了什麼?
write(T1, balx), read(T2, balx), write(T1, balx), commit(T2), abort(T1)
我正在修改考試,這些都是我一直在模擬論文中查看的問題之一。這是可串行化的嗎?
根據標記方案,答案是交易是可序列化的。但我不明白如何。
T1和T2在週期中被捕獲,因爲T1指向T2,然後指向優先圖中的T1,因此不會使其可序列化。標記是否錯誤或我在這裏錯過了什麼?
我認爲這裏的關鍵問題是,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和事務的狀態將是一樣的一個在您的示例。現在,如果T1已經提交,您將通過調用優先級圖來正確。
非常感謝,非常感謝。 – user2212485
標記:「序列化是將對象轉換爲可存儲並隨後檢索的格式的過程。」 – Barmar
這是我的錯誤:)。 – UmNyobe