首页
登录
从业资格
某抢红包软件规定发红包人可以一次抛出多个红包,由多个人来抢。要求每个抢红包的人最
某抢红包软件规定发红包人可以一次抛出多个红包,由多个人来抢。要求每个抢红包的人最
免费题库
2022-08-02
70
问题
某抢红包软件规定发红包人可以一次抛出多个红包,由多个人来抢。要求每个抢红包的人最多只能抢到同一批次中的一个红包,且存在多个人同时抢同一红包的情况。给定的红包关系模式如下:Red(ID,BatchID,SenderID,Money,ReceiverID)其中 ID 唯一标识每一个红包; BatchID 为发红包的批次,一个 BatchID 值可以对应多个 ID 值;SenderID 为发红包人的标识;Money 为红包中的钱数; ReceiverID 记录抢到红包的人的标识。发红包人一次抛出多个红包,即向红包表中插入多条记录,每条记录表示一个红包, 其 ReceiverID 值为空值。抢某个红包时,需要判定该红包记录的 ReceiverID 值是否为空,不为空时表示该红包已被抢走,不能再抢,为空时抢红包人将自己的标识写入到 ReceiverID 字段中,即为抢到红包。【问题 1】 (9分)引入两个伪指令 a = R(X) 和 W(b,X) 。其中a = R(X) 表示读取当前红包记录的 ReceiverID 字段(记为数据项 X) 到变量 a 中, W(b,X)表示将抢红包人的唯一标识 b 的值写入到当前红包记录的 ReceiverID 字段(数据项 X) 中,变量 a 为空值时才会执行 W(b,X) 操作。假设有多个人同时抢同一红包(即同时对同一记录进行操作),用ai=Ri(X)和Wi(bi,X)表示系统依次响应的第i个人的抢红包操作。假设当前数据项 X 为空值,同时有三个人抢同一红包,则(1)如下的调度执行序列:a1=R1,a2=R2(X),W1(b1,X),W2(b2,X),a3=R3(X)抢到红包的是第几人?并说明理由。(2)引入共享锁指令 SLocki(X)、独占锁指令XLocki(X)和解锁指令 ULocki(X),其中下标 i表示第 i个抢红包人的指令。如下的调度执行序列:SLock1(X),a1=R1(X),SLock2(X),a2=R2(X),XLock1(X)......是否会产生死锁?并说明理由。 (3)为了保证系统第一个响应的抢红包人为最终抢到红包的人,请使用上述。中引入的锁指令,对上述(1)中的调度执行序列进行修改,在满足 2PL协议的前提下,给 出一个不产生死锁的完整的调度执行序列。【问题 2】 (6分)下面是用 SQL实现的抢红包程序的一部分,请补全空缺处的代码CREATE PROCEDURE ScrambleRed (IN BatchNo VARCHAR(20) , --红包批号 (IN RecvrNo VARCHAR(20)) --接收红包者BEGIN --是否已抢过此批红包 if exists( SELECT * FROM Red WHERE BatchID = BatchNo AND ReceiverID = RecvrNo) thm return -1; end if; ---读取此批派发红包中未领取的红包记录ID DECLARE NonRecvedNo VARCHAR(30); DECLARE NonRecvedNo CURSOR FOR SELECT ID FROM Red WHERE BatchID = BatchNo AND ReceiverID IS NULL; -打开游标 OPEN NonRecvedRed; FETCH NonRecvedRed INTO NonRecvedNo; while not error —抢红包事务 BEGIN TRANSACTION; //写入红包记录 UPDATE RED SET ReceiverID =RecvrNo WHERE ID = nonRECVED AND (a) //执行状态判定 If<修改的记录数>= 1 THEN COMMIT; (b); Return 1; Else ROLLBACK; End if; (c); End while --关闭游标 CLOSE NonRecved RD Return 0;END
选项
答案
解析
【问题1】(9分)
(1)第2人,并发操作出现了丢失更新的问题,第2个的更新覆盖了第1个的更新,原因是破坏了事物的隔离性。
(2)会产生死锁,由于数据X同时被1和2加锁了S锁,在对方没有释放的时候,都无法加成功X锁,导致1和2一直都处于等待的状态。
(3)XLock(X) a=R(X) W(b,X)UNLock(X)
【问题2】(6分)
(a)ReceiverID is NULL
(b)CLOSE NonRecvedRed
(c)FETCH NonRecvedRed INTO NonRecvedNo
转载请注明原文地址:https://tihaiku.com/congyezige/2419941.html
本试题收录于:
中级 数据库系统工程师题库软件水平考试初中高级分类
中级 数据库系统工程师
软件水平考试初中高级
相关试题推荐
路由信息协议RIP是一种广泛使用的基于()的动态路由协议。RIP规定一条通路上最
以下关于包过滤防火墙描述错误的是()。A.防止感染了病毒的软件或文件的传输 B
()是构成我国保护计算机软件著作权的两个基本法律文件。单个自然人的软件著作权保护
(请作答此空)是构成我国保护计算机软件著作权的两个基本法律文件。单个自然人的软件
根据《计算机软件保护条例》的规定,当软件()后,其软件著作权才能得到保护。A
信息系统的智能化维护不包括()。A.自动修复设备和软件故障 B.针对风险做出预
以下关于软件测试的叙述中,正确的是()。A.软件测试的目的是为了证明软件是正确的
关于软件著作权产生的时间,表述正确的是(9)。A.自软件首次公开发表时
()不是软件商业秘密的基本特性。A.秘密性 B.实用性 C.保
根据《计算机软件保护条例》的规定,著作权法保护的计算机软件是指()。A.程序
随机试题
NOCASH,NOPROBLEM[img]2012q2/ct_eyyjsdz2006b_eyyjsdr
Madewithwildsementrichosanthis(—食品名)growingintheremotemountainsat
Whetherit’scurledupinthefetalposition,flatonthestomachorstretch
Invain______togetintouchwiththeauthorities.A、theytriedB、didtheytryC、
SaveforCollege[A]Inthisarticle,we’lllookatt
Thiskindofglassesmanufacturedbyexperiencedcraftsmen______(戴起来舒适)wearscom
下列选项中,哪一个关节属于鞍关节()。A.髋关节 B.桡腕关节 C.指关
在区分个人所得税的居民和非居民纳税人时,临时离境是指在一个纳税年度内,一次不得超
李某在张某的胁迫下签署了一份将自己房屋卖给张某的合同,该合同行为属于()。A、无
墙面砖粘贴每面墙不宜有两列以上非整砖,非整砖宽度一般不宜小于整砖的( )。A.
最新回复
(
0
)