当前位置:首页计算机类软件水平考试中级数据库系统工程师->阅读下列说明,回答问题1和问题2,将解答填入答题纸的对应栏内

阅读下列说明,回答问题1和问题2,将解答填入答题纸的对应栏内。【说明】 某抢红包软件规定发红包人可以一次抛出多个红包,由多个人来抢。要求每个抢红包的人最多只能抢到同一批次中的一个红包,且存在多个人同时抢同一红包的情况。给定的红包关系模式如下:Red(ID,BatchID,SenderID,Money,ReceiverID)其中 ID 唯一标识每一个红包; BatchID 为发红包的批次,一个 BatchID 值可以对应多个ID 值;SenderID 为发红包人的标识;Money 为红包中的钱数; ReceiverID 记录抢到红包的人的标识。发红包人一次抛出多个红包,即向红包表中插入多条记录,每条记录表示一个红包, 其 ReceiverID 值为空值。抢某个红包时,需要判定该红包记录的 ReceiverID 值是否为空,不为空时表示该红包己被抢走,不能再抢,为空时抢红包人将自己的标识写入到 ReceiverID 宇段中,即为抢到红包。【问题1】引入两个伪指令 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】 下面是用 SQL实现的抢红包程序的一部分,请补全空缺处的代码CREATE PROCEDURE ScrambleRed (IN BatchNo VARCHAR(20) , --红包批号( IN RecvrNo VARCHAR(20) ) 一接收红包者BEGIN--是否已抢过此批红包if exist s( SELECT * FROM Red WHERE BatchID = BatchNo AND ReceiverID = RecvrNo) thenreturn -1;end if;---读取此批派发红包中未领取的红包记录IDDECLARE NonRecvedNo VARCHAR(30);DECLARE NonRecvedRed CURSOR FORSELECT ID FROM RedWHERE BatchID = BatchNo AND ReceiverID IS NULL;-打开游标OPEN NonRecvedRed;FETCH NonRecvedRed INTO NonRecvedNo;while not error一抢红包事务BEGIN TRANSACTION;//写入红包记录UPDATE RED STE RECDIVER ID =RecvrNoWHERE ID = nonRECVED AND( a )//执行状态判定If<修改的记录数>= 1 THENCOMMIT;( b );Return 1;ElseROLLBACK;End if;( c );End while--关闭游标CLOSE NonRecved RDReturn 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)BatchID=BatchNo(b)CLOSE NonRecvedRed(c)END TRANSACTION

更新时间:2021-11-29 15:21

你可能感兴趣的试题

单选题

以下关于特权指令的叙述中,错误的是()。

  • A.特权指令集是计算机指令集的一个子集
  • B.特权指令与系统资源的操纵和控制有关
  • C.当计算机处于系统态运行时,它可以执行特权指令
  • D.当计算机运行在用户态时,它可以执行特权指令
查看答案
单选题

在虚拟存储系统中,相联存储器的访问方式是()寻址的。

  • A.直接
  • B.按地址
  • C.按内容
  • D.先入后出访问
查看答案
单选题

在实现文件系统时,为加快文件目录的检索速度,可利用“文件控制块分解法”。假设目录文件存放在磁盘上,每个盘块512字节。文件控制块占64字节,其中文件名占8字节,文件内部号和文件其他描述信息占56字节。设某一目录文件共有254个文件控制块,采用分解法前查找该目录文件的某一个文件控制块的平均访门磁盘次数为()。若目录文件分解前占用n个盘块,则分解后改用m个盘块存放文件名和文件内部号部分,那么访问磁盘次数减少的条件是(作答此空)。

  • A.mimage.pngn-1
  • B.mimage.pngn-2
  • C.m>n-1
  • D.m>n-2
查看答案
单选题

在实现文件系统时,为加快文件目录的检索速度,可利用“文件控制块分解法”。假设目录文件存放在磁盘上,每个盘块512字节。文件控制块占64字节,其中文件名占8字节,文件内部号和文件其他描述信息占56字节。设某一目录文件共有254个文件控制块,采用分解法前查找该目录文件的某一个文件控制块的平均访门磁盘次数为(作答此空)。若目录文件分解前占用n个盘块,则分解后改用m个盘块存放文件名和文件内部号部分,那么访问磁盘次数减少的条件是()。

  • A.2
  • B.4
  • C.8
  • D.16
查看答案
单选题

为了进行差错控制,必须对传送的数据帧进行校验。CRC-16标准规定的生成多项式为G(x)=X16+X15+X2+1,它产生的校验码是()位。如果CRC的生成多项式为G(X)=X4+X+1,信息码字为10110,则计算出的CRC校验码是(作答此空)。

  • A.0100
  • B.1010
  • C.0111
  • D.1111
查看答案
单选题

为了进行差错控制,必须对传送的数据帧进行校验。CRC-16标准规定的生成多项式为G(x)=X16+X15+X2+1,它产生的校验码是(作答此空)位。如果CRC的生成多项式为G(X)=X4+X+1,信息码字为10110,则计算出的CRC校验码是()。

  • A.2
  • B.15
  • C.16
  • D.33
查看答案
单选题

RAID级别是指磁盘阵列中硬盘的组合方式,不同级别的RAID为用户提供的磁盘阵列在性能上和安全性的表现上都有所不同。以下()是具有磁盘镜像和双工功能的磁盘阵列。

  • A.RAID1
  • B.RAID5
  • C.RAID7
  • D.RAID10
查看答案
单选题

当前磁盘读写位于柱面号20,此时有多个磁盘请求,以下列柱面号顺序送至磁盘驱动器10、22、20、2、40、6、38。寻道时,移动一个柱面需6ms,采用改进电梯调度算法所需寻道时间为()。

  • A.348ms
  • B.360ms
  • C.376ms
  • D.876ms
查看答案
单选题

嵌入式系统对应用软件的开发和编程语言的选择提出了不同的要求。以下所考虑的一些因素说法错误的是()。

  • A.通常嵌入式系统要求具有实时处理的能力,这种实时性主要是靠硬件层来体现的
  • B.通常嵌入式系统要求支持多任务,能够处理并发事件
  • C.嵌入式软件的开发需要交叉编译工具
  • D.电源能量的供应在嵌入式系统中是一项约束条件
查看答案
单选题

在系统转换的过程中,旧系统和新系统一起工作一段时间,再由新系统代替旧系统的转换策略称为()。

  • A.直接转换
  • B.间接转换
  • C.分段转换
  • D.并行转换
查看答案