假設一個交易(transaction)有五種基本運算,分別是⑴begin(T):交易T開始;⑵read(Y,y):將硬碟資料項Y讀到主記憶體變數y;⑶write(y,Y):將主記憶體變數y寫到硬碟資料項Y;⑷commit(T):交易T提交,表示T成功結束;⑸rollback(T):交易T被駁回。假設資料庫紀錄檔(database log)中用五種方式記錄交易的運算,分別為:⑴[start, T]:交易T開始;⑵[read, T, Y]:交易T讀取資料項Y;⑶[write, T, Y,更新前的值,更新後的值]:交易T更新資料項Y;⑷[commit, T]:交易T提交;⑸[rollback, T]:交易T被駁回。在WAL(Write-Ahead Logging)機制下,考慮交易T0、T1、T2和T3四個交易及以下的排程,假設資料項之初始值X=100、Y=425和Z=800,且記憶體夠大,作業系統不主動將記憶體緩衝區的資料或LOG紀錄寫回硬碟。 (1)執行時間序8之後(時間序9之前),記憶體和硬碟中資料項和紀錄檔的內容各為何? (2)執行時間序16之後(時間序17之前),記憶體和硬碟中資料項和紀錄檔的內容各為何? (3)發生系統當機,系統復原後硬碟中資料項X、Y和Z的值為何?
答案與詳解
