2011上半年數(shù)據(jù)庫(kù)系統(tǒng)工程師考試真題及答案解析下午卷(五)

數(shù)據(jù)庫(kù)系統(tǒng)工程師 責(zé)任編輯:茶泡了飯 2015-12-29

添加老師微信

備考咨詢(xún)

加我微信

摘要:2011上半年數(shù)據(jù)庫(kù)系統(tǒng)工程師考試真題及答案解析下午卷 試題五 閱讀下列說(shuō)明,回答問(wèn)題1至問(wèn)題3,將解答填入對(duì)應(yīng)欄內(nèi)。

>>>>>>>>>>點(diǎn)擊進(jìn)入數(shù)據(jù)庫(kù)系統(tǒng)工程師考試網(wǎng)絡(luò)課堂

>>>>>>>>>>點(diǎn)擊進(jìn)入數(shù)據(jù)庫(kù)系統(tǒng)工程師歷年真題題庫(kù)

>>>>>>>>>>點(diǎn)擊進(jìn)入數(shù)據(jù)庫(kù)工程師考試大綱教材


2011上半年數(shù)據(jù)庫(kù)系統(tǒng)工程師考試真題及答案解析

下午卷



      試題五
閱讀下列說(shuō)明,回答問(wèn)題1至問(wèn)題3,將解答填入對(duì)應(yīng)欄內(nèi)。
[說(shuō)明]
  某網(wǎng)上商品銷(xiāo)售系統(tǒng)的業(yè)務(wù)流程如下:
      26、將客戶(hù)的訂單記錄(訂單號(hào),客戶(hù)ID,商品ID,購(gòu)買(mǎi)數(shù)量)寫(xiě)入訂單表;
      27、將庫(kù)存表(商品ID,庫(kù)存量)中訂購(gòu)商品的庫(kù)存量減去該商品的購(gòu)買(mǎi)數(shù)量。
針對(duì)上述業(yè)務(wù)流程,完成下列問(wèn)題:
26、假設(shè)庫(kù)存量有大于等于0的約束,可能出現(xiàn)如下情況:當(dāng)訂單記錄寫(xiě)入訂單表后,修改庫(kù)存表時(shí)因違法約束而無(wú)法執(zhí)行,應(yīng)如何處理?(100字以?xún)?nèi))
  27、引入如下偽指令:將商品A的訂單記錄插入訂單表記為IA.;讀取商品A的庫(kù)存量到變量x,記為x=RA.;變量x值寫(xiě)入商品A中的庫(kù)存量,記為W(A,x)。則客戶(hù)i的銷(xiāo)售業(yè)務(wù)偽指令序列為:IiA.,xi=RiA.,xi=xi-ai,Wi(A,xi)。其中ai為商品的購(gòu)買(mǎi)數(shù)量。
假設(shè)當(dāng)前庫(kù)存量足夠,不考慮發(fā)生修改后庫(kù)存量小于0的情況。若客戶(hù)1、客戶(hù)2同時(shí)購(gòu)買(mǎi)同一種商品時(shí),可能山現(xiàn)的執(zhí)行序列為:I1A.,I2A.,x1=R1A.,x2=R2A.,x1=x1-a1,W1(A,x1),x2=x2-a2,W2(A,x2)。
      (1)此時(shí)會(huì)出現(xiàn)什么問(wèn)題?(100字以?xún)?nèi))
      (2)為了解決上述問(wèn)題,引入共享鎖指令SLockA.和獨(dú)占鎖指令XLockA.對(duì)數(shù)據(jù)A進(jìn)行加鎖,解鎖指令UnlockA.對(duì)數(shù)據(jù)A進(jìn)行解鎖,客戶(hù)i的加鎖指令用SLockiA.表示,其他類(lèi)同。插入訂單表的操作不需要引入鎖指令。請(qǐng)補(bǔ)充上述執(zhí)行序列,使其滿(mǎn)足2PL協(xié)議,并使持有鎖的時(shí)間最短。
  下面是用E-SQL實(shí)現(xiàn)的銷(xiāo)售業(yè)務(wù)程序的一部分,請(qǐng)補(bǔ)全空缺處的代碼。
SET TRANSACTION  ISOLATION LEVEL REPEATABLE READ;
      INSERT INTO 訂單表 VALUES (:OID,:CID,:MID,:qty);
      if error then  {  ROLLBACK; (a)  ;  }
      UPDATE  庫(kù)存表
      SET 庫(kù)存量=庫(kù)存量-:qty
      WHERE (b)  ;
      if error then  { ROLLBACK;  return;  }
(c)  ;
   



  參考答案及解析

      26、將寫(xiě)訂單記錄和修改庫(kù)存表作為一個(gè)完整的事務(wù)來(lái)處理,當(dāng)修改庫(kù)存表無(wú)法執(zhí)行時(shí),回滾事務(wù),則會(huì)撤銷(xiāo)寫(xiě)入的訂單記錄,數(shù)據(jù)庫(kù)保持一致。
      本題考查事務(wù)及并發(fā)控制的概念和應(yīng)用,屬于比較傳統(tǒng)的題目,考查點(diǎn)也與往年類(lèi)似。
      本問(wèn)題考查事務(wù)的基本概念。對(duì)于現(xiàn)實(shí)中的一項(xiàng)業(yè)務(wù),相對(duì)應(yīng)的數(shù)據(jù)庫(kù)更新操作應(yīng)作為一個(gè)完整的事務(wù),要么全做要么全不做。銷(xiāo)售業(yè)務(wù)對(duì)應(yīng)的寫(xiě)入訂單記錄和更新庫(kù)存表應(yīng)作為一個(gè)事務(wù),當(dāng)出現(xiàn)故障(違反約束)而無(wú)法完成時(shí),應(yīng)回滾事務(wù)。
      27、(1)出現(xiàn)問(wèn)題:客戶(hù)1購(gòu)買(mǎi)后寫(xiě)入的庫(kù)存量值被覆蓋,庫(kù)存量不能體現(xiàn)客戶(hù)1已購(gòu)買(mǎi),屬于丟失修改造成的數(shù)據(jù)庫(kù)不一致性。
(2)重寫(xiě)后的序列:
      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)。

  本問(wèn)題考查對(duì)事務(wù)并發(fā)控制的相關(guān)知識(shí)的理解掌握。若對(duì)并發(fā)事務(wù)的指令交叉執(zhí)行不加以干涉,就會(huì)相互干擾,破壞事務(wù)的隔離性,造成數(shù)據(jù)庫(kù)的不一致。并發(fā)事務(wù)產(chǎn)生的三種不一致性為丟失修改、不可重復(fù)讀和讀臟數(shù)據(jù)。本例中客戶(hù)1對(duì)庫(kù)存量的修改被客戶(hù)2的修改覆蓋,出現(xiàn)丟失修改不一致性。 為保證可串行化調(diào)度,在事務(wù)執(zhí)行過(guò)程中引入相應(yīng)指令進(jìn)行控制,即兩段鎖協(xié)議(2PL),對(duì)數(shù)據(jù)讀之前先加讀鎖,寫(xiě)前加寫(xiě)鎖,事務(wù)只有獲得相應(yīng)的鎖才能操作數(shù)據(jù),加解鎖過(guò)程分為兩個(gè)階段,前一階段只能加鎖,后一階段只能解鎖,不允許有交叉。兩段鎖協(xié)議是保證并發(fā)事務(wù)可串行化調(diào)度的充分條件。
  針對(duì)給出的偽指令操作序列,需要在修改庫(kù)存量之前加X(jué)lock()指令,并保證客戶(hù)1釋放A上的鎖后客戶(hù)2才能加鎖。題目設(shè)定插入訂單表的操作不需要引入鎖指令,每個(gè)事務(wù)只需對(duì)庫(kù)存量加解鎖,滿(mǎn)足2PL協(xié)議。
   28、return
29、商品ID=:MID
30、COMMTT

  本問(wèn)題考查對(duì)2PL協(xié)議理論與SQL中的隔離級(jí)別,以及嵌入式SQL的編程實(shí)踐。
  本題給出的空缺(a)是在事務(wù)回滾之后,需要補(bǔ)充的是控制程序邏輯的return語(yǔ)句;空缺(b)要補(bǔ)充的是WHERE條件,即指定的商品ID;空缺(c)要補(bǔ)充的是事務(wù)提交語(yǔ)句COMMIT。


>>>>>>>>>>點(diǎn)擊繼續(xù)答題

>>>>>>>>>>點(diǎn)擊返回目錄


相關(guān)鏈接:

  數(shù)據(jù)庫(kù)系統(tǒng)工程師考試知識(shí)點(diǎn)分析與真題詳解(第4版)
      數(shù)據(jù)庫(kù)系統(tǒng)工程師考試歷年試題分析與解答(第4版)
      數(shù)據(jù)庫(kù)系統(tǒng)工程師考試下午知識(shí)點(diǎn)精講與考前必練
      數(shù)據(jù)庫(kù)系統(tǒng)工程師考試考前串講




更多資料
更多課程
更多真題
溫馨提示:因考試政策、內(nèi)容不斷變化與調(diào)整,本網(wǎng)站提供的以上信息僅供參考,如有異議,請(qǐng)考生以權(quán)威部門(mén)公布的內(nèi)容為準(zhǔn)!

軟考備考資料免費(fèi)領(lǐng)取

去領(lǐng)取

!
咨詢(xún)?cè)诰€老師!