摘要:2011上半年數據庫系統工程師考試真題及答案解析下午卷 試題五 閱讀下列說明,回答問題1至問題3,將解答填入對應欄內。
下午卷
試題五
閱讀下列說明,回答問題1至問題3,將解答填入對應欄內。
[說明]
某網上商品銷售系統的業務流程如下:
26、將客戶的訂單記錄(訂單號,客戶ID,商品ID,購買數量)寫入訂單表;
27、將庫存表(商品ID,庫存量)中訂購商品的庫存量減去該商品的購買數量。
針對上述業務流程,完成下列問題:
26、假設庫存量有大于等于0的約束,可能出現如下情況:當訂單記錄寫入訂單表后,修改庫存表時因違法約束而無法執行,應如何處理?(100字以內)
27、引入如下偽指令:將商品A的訂單記錄插入訂單表記為IA.;讀取商品A的庫存量到變量x,記為x=RA.;變量x值寫入商品A中的庫存量,記為W(A,x)。則客戶i的銷售業務偽指令序列為:IiA.,xi=RiA.,xi=xi-ai,Wi(A,xi)。其中ai為商品的購買數量。
假設當前庫存量足夠,不考慮發生修改后庫存量小于0的情況。若客戶1、客戶2同時購買同一種商品時,可能山現的執行序列為:I1A.,I2A.,x1=R1A.,x2=R2A.,x1=x1-a1,W1(A,x1),x2=x2-a2,W2(A,x2)。
(1)此時會出現什么問題?(100字以內)
(2)為了解決上述問題,引入共享鎖指令SLockA.和獨占鎖指令XLockA.對數據A進行加鎖,解鎖指令UnlockA.對數據A進行解鎖,客戶i的加鎖指令用SLockiA.表示,其他類同。插入訂單表的操作不需要引入鎖指令。請補充上述執行序列,使其滿足2PL協議,并使持有鎖的時間最短。
下面是用E-SQL實現的銷售業務程序的一部分,請補全空缺處的代碼。
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
INSERT INTO 訂單表 VALUES (:OID,:CID,:MID,:qty);
if error then { ROLLBACK; (a) ; }
UPDATE 庫存表
SET 庫存量=庫存量-:qty
WHERE (b) ;
if error then { ROLLBACK; return; }
(c) ;
參考答案及解析
26、將寫訂單記錄和修改庫存表作為一個完整的事務來處理,當修改庫存表無法執行時,回滾事務,則會撤銷寫入的訂單記錄,數據庫保持一致。
本題考查事務及并發控制的概念和應用,屬于比較傳統的題目,考查點也與往年類似。
本問題考查事務的基本概念。對于現實中的一項業務,相對應的數據庫更新操作應作為一個完整的事務,要么全做要么全不做。銷售業務對應的寫入訂單記錄和更新庫存表應作為一個事務,當出現故障(違反約束)而無法完成時,應回滾事務。
27、(1)出現問題:客戶1購買后寫入的庫存量值被覆蓋,庫存量不能體現客戶1已購買,屬于丟失修改造成的數據庫不一致性。
(2)重寫后的序列:
I1(A),I2(A),XLock1(A),x1=R1(A),x1=x1-a1,W1(A,x1),Unlock1(A),XLock2(A),x2=R2(A),x2=x2-a2,W2(A,x2),Unlock2(A)。
本問題考查對事務并發控制的相關知識的理解掌握。若對并發事務的指令交叉執行不加以干涉,就會相互干擾,破壞事務的隔離性,造成數據庫的不一致。并發事務產生的三種不一致性為丟失修改、不可重復讀和讀臟數據。本例中客戶1對庫存量的修改被客戶2的修改覆蓋,出現丟失修改不一致性。 為保證可串行化調度,在事務執行過程中引入相應指令進行控制,即兩段鎖協議(2PL),對數據讀之前先加讀鎖,寫前加寫鎖,事務只有獲得相應的鎖才能操作數據,加解鎖過程分為兩個階段,前一階段只能加鎖,后一階段只能解鎖,不允許有交叉。兩段鎖協議是保證并發事務可串行化調度的充分條件。
針對給出的偽指令操作序列,需要在修改庫存量之前加Xlock()指令,并保證客戶1釋放A上的鎖后客戶2才能加鎖。題目設定插入訂單表的操作不需要引入鎖指令,每個事務只需對庫存量加解鎖,滿足2PL協議。
28、return
29、商品ID=:MID
30、COMMTT
本問題考查對2PL協議理論與SQL中的隔離級別,以及嵌入式SQL的編程實踐。
本題給出的空缺(a)是在事務回滾之后,需要補充的是控制程序邏輯的return語句;空缺(b)要補充的是WHERE條件,即指定的商品ID;空缺(c)要補充的是事務提交語句COMMIT。
相關鏈接:
數據庫系統工程師考試知識點分析與真題詳解(第4版)
數據庫系統工程師考試歷年試題分析與解答(第4版)
數據庫系統工程師考試下午知識點精講與考前必練
數據庫系統工程師考試考前串講
軟考不知道考啥科目?掃碼測最適合你的報考科目

熱門活動:【免費考前摸底】軟考4月模考大賽![]()
軟考備考資料免費領取
去領取
專注在線職業教育25年