问题
问答题
若两个售票网点同时销售航班A的机票,在数据库服务器端可能出现如下的调度:
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个销售网点的读写操作,其余类同。
假设当前航班A剩余10张机票,分析上述三个调度各自执行完后的剩余票数,并指出错误的调度及产生错误的原因。
答案
参考答案:
调度A结果:8 调度B结果:9 调度C结果:7
调度A、B结果错误,因为破坏了事务的隔离性。一个事务的执行结果被另一个所覆盖。
解析:
本问题考查并发情况下不同的调度可能产生不同结果的情况。针对两个并发执行的售票程序,会相互影响从而得到错误的结果。