天堂888-欧美黄色小说-熟睡侵犯の奶水授乳在线-初尝情欲h名器av-亚洲天堂免费视频-日韩五十路-免费在线国产-国产又大又黄又粗-久草导航-色播导航-亚洲免费资源-熟女一区二区三区视频-亚洲美女视频在线-亚洲成人福利视频-婷婷精品在线-亚洲综合p-中文字幕 日本-亚洲骚片-亚洲自拍偷拍网-国产农村妇女精品一区二区-午夜中出-久久精品国产精品亚洲毛片-91精品毛片-99爱视频在线-狠狠操亚洲-美女让人操-里番本子纯肉侵犯肉全彩无码-999偷拍

2011上半年數據庫系統工程師考試真題及答案解析下午卷(五)

數據庫系統工程師 責任編輯:茶泡了飯 2015-12-29

添加老師微信

備考咨詢

加我微信

摘要:2011上半年數據庫系統工程師考試真題及答案解析下午卷 試題五 閱讀下列說明,回答問題1至問題3,將解答填入對應欄內。

>>>>>>>>>>點擊進入數據庫系統工程師考試網絡課堂

>>>>>>>>>>點擊進入數據庫系統工程師歷年真題題庫

>>>>>>>>>>點擊進入數據庫工程師考試大綱教材


2011上半年數據庫系統工程師考試真題及答案解析

下午卷



      試題五
閱讀下列說明,回答問題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版)
      數據庫系統工程師考試下午知識點精講與考前必練
      數據庫系統工程師考試考前串講




更多資料
更多課程
更多真題
溫馨提示:因考試政策、內容不斷變化與調整,本網站提供的以上信息僅供參考,如有異議,請考生以權威部門公布的內容為準!

軟考備考資料免費領取

去領取

!
咨詢在線老師!