假设有两项业务对应的事务 T1、 T2与存款关系有关: (1)转账业务: T1

资格题库2022-08-02  37

问题 假设有两项业务对应的事务 T1、 T2与存款关系有关:(1)转账业务: T1(A,B,50),从账户A向账户B转50元;(2)计息业务: T2,对当前所有账户的余额计算利息,余额为X*1.01。针对上述业务流程,回答下列问题:【问题1】(3分)假设当前账户A余额为100元,账户B余额为200元。有两个事务分别为 T1 (A,B,50),T2,一种可能的串行执行为:T1(A, B, 50) → T2结果:A= 50.5 B=252.5 A+B=303请给出其他的串行执行次序和结果。【问题2】(8分)若上述两个事务的一个并发调度结果如下:(1)上述调度是否正确,为什么?(3分)(2)引入共享锁指令Slock(  )、独占锁指令Xlock(  )和解锁指令Unlock(  ),使上述调度满足两段锁协议,并要求先响应 T1的请求。请给出一个可能的并发调度结果。(5分)【问题3】(4分)若将计息业务 T2改为对单个账户的余额计算利息,即 T2 (A)余额为A*1.01,请给出串行调度 T1 (A,B,50) → T2(A) → T2(B)和串行调度 T2 (A) → T1 (A,B,50) → T2(B)的执行结果。若将计息业务设计为对单个账户的余额计算利息,这种方案是否正确,为什么?

选项

答案

解析 【问题1】(3分)T2— T1 (A,B,50) 结果:A= 51 B=252 A+B = 303【问题2】(8分)(1)调度不正确结果为:A= 50.5B=252原因: 与任何一个串行结果都不同。(2)满足两段锁协议的调度:【问题3】(4分)三个事务的串行:(1)T1 (A,B,50)→T2 (A) →T2 (B)结果:A= 50.5 B=252.5(2)T2 (A) →T1 (A,B,50)→T2(B)结果:A=51 B=252.5不正确。计息业务设计为对单个账户的余额计算利息,无法实现对所有账户统一计息,其间的转账会产生数据错误,会造成银行或客户的损失。
转载请注明原文地址:https://www.tihaiku.com/congyezige/2419725.html

最新回复(0)