閱讀下列說(shuō)明,回答問(wèn)題1至問(wèn)題3,將解答填入答題紙的對(duì)應(yīng)欄內(nèi)。
【說(shuō)明】
某銀行的轉(zhuǎn)帳業(yè)務(wù)分為如下兩類操作:
(1)讀取帳戶A 余額到變量x,記為x = R(A);
(2)將變量x值寫(xiě)入帳戶A 中的余額,記為W(A, x)。
從帳戶A 向帳戶B 轉(zhuǎn)帳金額x元的偽代碼操作序列為:a = R(A), a = a-x, W(A, a), b = R(B), b = b+x, W(B,b)。
針對(duì)上述業(yè)務(wù)及規(guī)則,完成下列問(wèn)題:
【問(wèn)題1】(5 分)
根據(jù)業(yè)務(wù)規(guī)則,轉(zhuǎn)帳業(yè)務(wù)要么被全部執(zhí)行,要么全部不執(zhí)行,應(yīng)如何保障?假設(shè)參與轉(zhuǎn)帳的帳戶余額有大于等于0的約束,上述偽代碼執(zhí)行中可能出現(xiàn)什么情況,應(yīng)如何處理?(100字以內(nèi))
【問(wèn)題2】(5分)
若允許對(duì)同一帳號(hào)同時(shí)進(jìn)行轉(zhuǎn)帳,要保證轉(zhuǎn)帳程序的并發(fā)執(zhí)行,引入共享鎖指令SLock(b)和獨(dú)占鎖指令XLock(A)對(duì)數(shù)據(jù)A 進(jìn)行加鎖,解鎖指令Unlock(A)對(duì)數(shù)據(jù)A 進(jìn)行解鎖。
請(qǐng)補(bǔ)充上述轉(zhuǎn)帳業(yè)務(wù)的偽代碼序列,使其滿足2PL協(xié)議。
【問(wèn)題3】(5 分)
若用SQL語(yǔ)句編寫(xiě)的轉(zhuǎn)帳業(yè)務(wù)事務(wù)程序如下:
START TRANSACTION;
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
UPDATE Accounts
SET CurrentBalance = CurrentBalance - Amount
WHERE AccountID = A;
if error then ROLLBACK;
COMMIT;
UPDATE Accounts
SET CurrentBalance = CurrentBalance + Amount
WHERE AccountID = B;
if error then ROLLBACK;
COMMIT;
其中:Accounts為帳戶表,CurrentBalance為當(dāng)前余額,Amount為新存入的金額。
該事務(wù)程序能否保證數(shù)據(jù)的一致性?如不能,請(qǐng)說(shuō)明原因并改正。(100字以內(nèi))
10年專注信管,信管教育專注者,信管網(wǎng)優(yōu)勢(shì)
免費(fèi)試聽(tīng)信管網(wǎng)信息系統(tǒng)項(xiàng)目管理師課程
全國(guó)前50名高分學(xué)員訪談:董麗(174)、李思...
信息系統(tǒng)項(xiàng)目管理師高端班培訓(xùn)課程
信管老師100小時(shí)直播課程
軟考報(bào)名專題(報(bào)名時(shí)間、入口等)
中級(jí)系統(tǒng)集成項(xiàng)目管理工程師通關(guān)課程
系統(tǒng)規(guī)劃與管理師課程(考試介紹與題型分析)
軟題庫(kù):軟考在線題庫(kù)、支持手機(jī)答題