用看的、听的学真题

study by eyes and ears.

  1. 首页
  2. 数据库系统工程师
  3. 2008年05月数据库系统工程师考试下午真题【应用技术】
  4. 真题详解

2008年05月数据库系统工程师考试下午真题【应用技术】(第5题) 收藏

【5】  阅读下列说明,回答问题1至问题3,将解答填入对应栏内。
【说明】
  某银行的转账业务分为如下两类操作:
  (1)读取账户A余额到变量x,记为x=R(A);
  (2)将变量x值写入账户A中的余额,记为W(A,x)。
  从账户A向账户B转账金额x元的伪代码操作序列为:a=R(A),a=a-X,w(A,a), b=R(B)。,b=b+x,W(B,b)。
  针对上述业务及规则,完成下列问题:

问题1 (5.0分)

  根据业务规则,转账业务要么被全部执行,要么全部不执行,应如何保障?假设参与转账的账尸余额有大于等于。的约束,上述伪代码执行中可能出现什么情况,应如何处理?(100字以内)
暂无

问题2 (5.0分)

  若允许对同一账号同时进行转账,要保证转账程序的并发执行,引入共享锁指令 SLock(b)和独占锁指令XLockA。对数据A进行加锁,解锁指令UnlockA。对数据A进行解锁。
  请补充上述转账业务的伪代码序列,使其满足2PL协议。
暂无

问题3 (5.0分)

  若用SQL语句编写的转账业务事务程序如下:
  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为当前余额,Amount为新存入的金额。
  该事务程序能否保证数据的一致性?如不能,请说明原因并改正。(100字以内)
暂无
广告位