试题五(共15 分) 阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。 【说明】某航空售票
试题五(共15 分)
阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。
【说明】
某航空售票系统负责所有本地起飞航班的机票销售,并设有多个机票销售网点。各售票网点使用相同的售票程序。假设售票程序中用到的伪指令如下表5-1所示:
假设某售票网点一次售出a张航班A 的机票,则售票程序的伪指令序列为: R (A, x); W (A, x – a)。根据上述业务及规则,完成下列问题:
【问题1】(5 分)
若两个售票网点同时销售航班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 张机票,分析上述三个调度各自执行完后的剩余票数,并指出错误的调度及产生错误的原因。
【问题2】(6 分)
(1)判定事务并发执行正确性的准则是什么?如何保证并发事务正确地执行?
(2) 引入相应的加解锁指令,重写售票程序的伪指令序列,以保证正确的并发调度。
【问题3】(4 分)
下面是用E-SQL实现的机票销售程序的一部分,请补全空缺处的代码。
EXEC SQL SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
EXEC SQL SELECT balance INTO :x FROM tickets WHERE flight = ‘A’ ;
printf("航班A 当前剩余机票数为:%d\n请输入购票数:", x );
scanf("%d", &a);
x = x – a ;
if (x<0)
EXEC SQL ROLLBACK WORK;
printf("票数不够,购票失败!");
else{
EXEC SQL UPDATE tickets SET (a) ;
if (SQLCA.sqlcode <> SUCCESS)
EXEC SQL ROLLBACK WORK;
else
(b) ;
}
试题五(15分)问题1(5分)调度A结果:8调度B结果:9调度C结果:7(3分)调度A,B结果错误,因为破坏了事物的隔离性。一个事务的执行结果被另一个所覆盖。(2分)问题2(6分)(1)判定事务并发执行正确性的准则是满足可串行化调度。(2分)要保证并发事务正确地执行,采用两段锁协议(2PL)。(2分)(2)重写后的售票程序伪指令序列:(2分)XLock(A);R(A,x);W(A,x-a);Unlock(A);问题3(4分)(a)balance=:xWHEREflight=‘A’(2分)(b)EXECSQLCOMMITWORK(2分)
f(x)=2sin(2x+π/6)写出g(x)=f(x),x€[-7π/12,5π/12]的对称中 数学 2020-05-20 …
对于理解你的人,不需要解释,对于不理解你的人,解释再多也没用.说出对方观点.对于理解你的人不需要解 语文 2020-06-05 …
讨论自己对牌的理解与说明书对牌的解释背道而驰时应怎样?当自己对牌意的理解与说明书对牌意的解释不一样 其他 2020-07-10 …
(-250又7分之5)÷(-5)=(-250+7分之5)÷(-5)=(-250)÷(-5)+7分之 数学 2020-07-19 …
(1/3X)/4+(1/3X)/5+(1/3X)/4.5=(1/2X)/5+(1/2X)/4-1/ 数学 2020-07-19 …
c语言中,帮解释下%运算的值比方说,5%4=10%5=?10%2=?3%5=?4%7=?带问号的是 其他 2020-07-22 …
(根号x)^log5(x-1)=5解对数方程老师说用取对数的方法,可不可以具体解释下怎么取对数? 数学 2020-07-30 …
下列关于点电荷的场强公式的几种不同的理解5.对公式的几种不同理解,错误的是[]A.当r→0时,E→ 物理 2020-07-31 …
对于一元一次方程、一元二次方程、二元一次方程组、三元一次方程组、分式,解的情况是不是都有两种情况? 数学 2020-08-02 …
解绝对值方程在数轴上,运用两点距离的概念和计算公式,解下列方程:|x+3|+|x-1|=5|x+3 数学 2020-08-03 …