高普考題庫
115 年 115年公務人員高等考試三級考試暨普通考試・資料庫應用
申論 3假設資料庫中有三個資料項(Data Items):A、B、C,其三者初始值皆為100,當有三筆交易T、T 與T 同時進入系統,各自交易的預期操作順序如下所示:T:read(A) →write(A) →read(B) →write(B)T:read(B) →write(B) →read(C) →write(C)T:read(C) →read(A) →write(A)假設排程器(Scheduler)採用嚴格兩階段鎖定協定(Strict 2PL):也就是「在增長階段(Growing Phase),交易可以取得鎖定,但不能釋放任何鎖定」以及「在收縮階段(Shrinking Phase),交易持有的所有互斥鎖X(X-lock)必須持續保留,直到交易提交(Commit)或中斷(Abort)後才能一次釋放」。所有操作皆遵循著「具備鎖定升級:即若交易已持有共享鎖S,在執行write 前必須升級為互斥鎖X」。考慮排程器依照時間序列t 至t收到下列操作請求:時間分配請求與操作時間分配請求與操作t:T 請求read(A)t:T 請求read(B)t:T 請求read(B)t:T 請求read(C)t:T 請求read(C)t:T 請求read(A)t:T 請求write(A)t:T 試圖提交(commit)t:T 請求write(B)請回答以下問題:㈠詳細分析從t 至t 的執行過程中,各個交易的鎖定狀態變化,並且標記該時間點交易是否會進入阻塞(Blocked/Waiting)狀態?(書寫時,若某個資料項要使用S 鎖請標註Lock-S(資料項),若需要X 鎖則書寫Lock-X(資料項)。)(10 分)㈡此排程於t 之後的時間,是否有機會形成死結(Deadlock)?若有,請指出是那些交易互相等待。(10 分)㈢若排程能順利執行或經由處理後結束,請說明各交易的鎖定點(LockPoint)分別位於那一個時間點。(5 分)