試題五(15 分) 閱讀下列說明,回答問題 1 至問題 3,將解答填入答題紙的對應欄內(nèi)。 【說明】 某銀行的
試題五(15 分)
閱讀下列說明,回答問題 1 至問題 3,將解答填入答題紙的對應欄內(nèi)。
【說明】
某銀行的存款業(yè)務分為如下三個過程:
(1)讀取當前帳戶余額,記為 R(b);
(2)當前余額 b 加上新存入的金額 x 作為新的余額 b,即 b = b + x;
(3)將新余額 b 寫入當前帳戶,記為 W(b)。
存款業(yè)務分布于該銀行各營業(yè)廳,并允許多個客戶同時向同一帳戶存款,針對這一
需求,完成下述問題。
【問題 1】 (5 分)
假設同時有兩個客戶向同一帳號發(fā)出存款請求,該程序會出現(xiàn)什么問題?(100 字以內(nèi))
【問題 2】 (5 分)
存款業(yè)務的偽代碼程序為 R(b), b = b + x, W(b)。 現(xiàn)引入共享鎖指令 SLock(b)和獨占鎖指令 XLock(b)對數(shù)據(jù) b 進行加鎖,解鎖指令 Unlock(b)對數(shù)據(jù) b 進行解鎖。 請補充上述存款業(yè)務的偽代碼程序,使其滿足 2PL 協(xié)議。
【問題 3】 (5 分)
若用 SQL 語句編寫的存款業(yè)務事務程序如下:
……
START TRANSACTION;
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
UPDATE Accounts
SET CurrentBalance = CurrentBalance + Amount
WHERE AccountID = AccountNo;
COMMIT;
……
其中:Accounts為帳戶表,CurrentBalance為當前余額,Amount 為新存入的金額,
AccountNo 為外部輸入的帳戶編碼。
該事務程序能否正確實現(xiàn)并發(fā)的存款業(yè)務?如果不能,請說明原因,應做怎樣的修改?(100 字以內(nèi))