某航空售票系统负责所有本地起飞航班的机票销售,并设有多个机票销售网点。各售票网点使用相同的售票程序。假设售票程序中用到的伪指令如表5-1所示。 假设某售票网点一次售出a张航班A的机票,则售票程序的伪指令序列为:R(A,x);W(A,X-a)。根据上述业务

admin2011-01-29  27

问题 某航空售票系统负责所有本地起飞航班的机票销售,并设有多个机票销售网点。各售票网点使用相同的售票程序。假设售票程序中用到的伪指令如表5-1所示。

假设某售票网点一次售出a张航班A的机票,则售票程序的伪指令序列为:R(A,x);W(A,X-a)。根据上述业务及规则,完成下列问题:
(1)判定事务并发执行正确性的准则是什么?如何保证并发事务正确地执行?
(2)引入相应的加解锁指令,重写售票程序的伪指令序列,以保证正确的并发调度。

选项

答案(1)判定事务并发执行正确性的准则是满足可串行化调度。要保证并发事务正确地执行,采用两段锁协议(2PL)。 (2)重写后的售票程序伪指令序列: XLock(A);R (A,x); w (A, x-a); Unlock(A);

解析 本问题考查对事务并发控制的相关知识的理解掌握。事务并发调度是否正确,可通过对非冲突语句进行交换,若最终将并发调度通过交换非冲突语句转换成串行调度,则该并发调度为可串行化调度,可串行化调度被作为事务并发执行正确性的准则。
   为保证可串行化调度,在事物执行过程中引入相应指令进行控制,即两段锁协议(2PL),即对数据读之前先加读锁,写前加写锁,事务只有获得相应的锁才能操作数据,加解锁过程分为两个阶段,前一阶段只能加锁,后一阶段只能解锁,不允许有交叉。两段锁协议是保证并发事务可串行化调度的充分条件。
   针对给出的伪指令操作序列,在事务读取数据之前加Slock()指令,写数据之前加Xlock()指令,并保证读/写锁不交叉,即满足两段锁协议。
转载请注明原文地址:https://kaotiyun.com/show/JwUZ777K
0

相关试题推荐
最新回复(0)