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

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

添加老師微信

備考咨詢(xún)

加我微信

摘要:2010年上半年數(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ù)工程師考試大綱教材


2010年上半年數(shù)據(jù)庫(kù)系統(tǒng)工程師考試真題

下午卷


試題五
閱讀下列說(shuō)明,回答問(wèn)題1至問(wèn)題3,將解答填入答題紙的對(duì)應(yīng)欄內(nèi)。
[說(shuō)明]
  某航空售票系統(tǒng)負(fù)責(zé)所有本地起飛航班的機(jī)票銷(xiāo)售,并設(shè)有多個(gè)機(jī)票銷(xiāo)售網(wǎng)點(diǎn)。各售票網(wǎng)點(diǎn)使用相同的售票程序。假設(shè)售票程序中用到的偽指令如表5-1所示。

50.png

假設(shè)某售票網(wǎng)點(diǎn)一次售出a張航班A的機(jī)票,則售票程序的偽指令序列為:R(A,x);W(A,X-a)。根據(jù)上述業(yè)務(wù)及規(guī)則,完成下列問(wèn)題:
[問(wèn)題1]
  若兩個(gè)售票網(wǎng)點(diǎn)同時(shí)銷(xiāo)售航班A的機(jī)票,在數(shù)據(jù)庫(kù)服務(wù)器端可能出現(xiàn)如下的調(diào)度:
A:R1(A,x),R2(A,X),W1(A,x-1),W2(A,x-2);
B:R1(A,x),R2(A,x),W2(A,x-2),W1(A,x-1);
      C:R1(A,x),W1(A,x-1),R2(A,X),W2(A,x-2);
      其中Ri(A,x),Wi(A,x)分別表示第i個(gè)銷(xiāo)售網(wǎng)點(diǎn)的讀寫(xiě)操作,其余類(lèi)同。
      假設(shè)當(dāng)前航班A剩余10張機(jī)票,分析上述三個(gè)調(diào)度各自執(zhí)行完后的剩余票數(shù),并指出錯(cuò)誤的調(diào)度及產(chǎn)生錯(cuò)誤的原因。
[問(wèn)題2]
      (1)判定事務(wù)并發(fā)執(zhí)行正確性的準(zhǔn)則是什么?如何保證并發(fā)事務(wù)正確地執(zhí)行?
(2)引入相應(yīng)的加解鎖指令,重寫(xiě)售票程序的偽指令序列,以保證正確的并發(fā)調(diào)度。

  [問(wèn)題3]
下面是用E-SQL實(shí)現(xiàn)的機(jī)票銷(xiāo)售程序的一部分,請(qǐng)補(bǔ)全空缺處的代碼。
EXEC SQL SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
      EXEC SQL SELECT balance INTO :x FROM tickets WHERE flight='A';
      printf("航班A當(dāng)前剩余機(jī)票數(shù)為:%d\n請(qǐng)輸入購(gòu)票數(shù):",x);
      scanf("%d",&a);
      x=x-a;
      if(x<0)
      EXEC SQL ROLLBACK WORK;
      printf("票數(shù)不夠,購(gòu)票失敗!");
      else{
EXEC SQL UPDATE tickets SET (a)
      if(SQLCA.sqlcode<>SUCCESS)
      EXEC SQL ROLLBACK WORK;
      else (b)  }



  試題五分析
本題考查的是并發(fā)控制的概念和應(yīng)用,屬于比較傳統(tǒng)的題目,考查點(diǎn)也與往年類(lèi)似。
[問(wèn)題1]
  本問(wèn)題考查并發(fā)情況下不同的調(diào)度可能產(chǎn)生不同結(jié)果的情況。針對(duì)兩個(gè)并發(fā)執(zhí)行的售票程序,會(huì)相互影響從而得到錯(cuò)誤的結(jié)果。
  [問(wèn)題2]
  本問(wèn)題考查對(duì)事務(wù)并發(fā)控制的相關(guān)知識(shí)的理解掌握。事務(wù)并發(fā)調(diào)度是否正確,可通過(guò)對(duì)非沖突語(yǔ)句進(jìn)行交換,若最終將并發(fā)調(diào)度通過(guò)交換非沖突語(yǔ)句轉(zhuǎn)換成串行調(diào)度,則該并發(fā)調(diào)度為可串行化調(diào)度,可串行化調(diào)度被作為事務(wù)并發(fā)執(zhí)行正確性的準(zhǔn)則。
為保證可串行化調(diào)度,在事物執(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ì)給出的偽指令操作序列,在事務(wù)讀取數(shù)據(jù)之前加Slock()指令,寫(xiě)數(shù)據(jù)之前加X(jué)lock()指令,并保證讀/寫(xiě)鎖不交叉,即滿(mǎn)足兩段鎖協(xié)議。
  [問(wèn)題3]
  本問(wèn)題考查對(duì)2PL協(xié)議理論與SQL中的隔離級(jí)別,以及嵌入式SQL的編程實(shí)踐。 本地給出的空缺(a)要補(bǔ)充的是嵌入式SQL的更新語(yǔ)句;空缺(b)要補(bǔ)充的是嵌入式SQL中的事務(wù)提交語(yǔ)句。



  參考答案
[問(wèn)題1]
調(diào)度A結(jié)果:8
調(diào)度B結(jié)果:9
調(diào)度C結(jié)果:7
      調(diào)度A、B結(jié)果錯(cuò)誤,因?yàn)槠茐牧耸聞?wù)的隔離性。一個(gè)事務(wù)的執(zhí)行結(jié)果被另一個(gè)所覆蓋。

  [問(wèn)題2]
(1)判定事務(wù)并發(fā)執(zhí)行正確性的準(zhǔn)則是滿(mǎn)足可串行化調(diào)度。要保證并發(fā)事務(wù)正確地執(zhí)行,采用兩段鎖協(xié)議(2PL)。
      (2)重寫(xiě)后的售票程序偽指令序列:
XLock(A);
R (A,x);
w (A, x-a);
Unlock(A);
[問(wèn)題3]
(a)balance= :x WHERE flight='A'
  (b)(b)EXEC SQL COMMIT WORK



>>>>>>>>>>點(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è)诰€(xiàn)老師!