首页
登录
从业资格
某连锁酒店提供网上预订房间业务,流程如下:(1)客户查询指定日期内所有类别的空余
某连锁酒店提供网上预订房间业务,流程如下:(1)客户查询指定日期内所有类别的空余
admin
2022-08-02
66
问题
某连锁酒店提供网上预订房间业务,流程如下:(1)客户查询指定日期内所有类别的空余房间数,系统显示空房表(日期,房间类别,数量)中的信息。(2)客户输入预订的起始日期、结束日期、房间类别和数量,并提交。(3)系统将用户提交的信息写入预订表(身份证号,起始日期,结束日期,房间类别,数量),并修改空房表的相关数据。【问题1】如果两个用户同时查询相同日期和房间类别的空房数量,得到的空房数量为1,并且这两个用户又同时要求预订,可能会产生什么结果,请用100字以内的文字简要叙述。【问题2】引入如下伪指令:将预订过程作为一个事务,将查询和修改空房表的操作分别记为R(A)和W(A,x),插入预订表的操作记为W(B,a),其中x代表空余房间数,a代表预订房间数,则事务的伪指令序列为:x=R(A),W(A,x-a),w(B,a)。在并发操作的情况下,若客户1、客户2同时预订相同类别的房间时,可能出现的执行序列为:x1=R(A),x2=R(A),W(A,x1-a1),W(B1,a1),W(A,x2-a2),W(B2,a2)。(1)此时会出现什么问题,请用100字以内的文字简要叙述。(2)为了解决上述问题,引入共享锁指令SLock(X)和独占锁指令XLock(X)对数据X进行加锁,解锁指令Unlock(X)对数据X进行解锁,请补充上述执行序列,使其满足2PL协议,不产生死锁且持有锁的时间最短。【问题3】下面是实现预订业务的程序,请补全空缺处的代码。其中主变量":Cid"、":Bdate"、":Edate"、":Rtype"、":Num"分别代表身份证号、起始日期、结束日期、房间类别和订房数量。SET TRANSACTION ISOLATION LEVEL REPEATABLE READ; UPDATE 空房表 SET 数量=数量-:Num WHERE (a) ; if error then {ROLLBACK; return -1; } INSERT INTO 预订表 VALUES (:cid, :Bdate, :Edate, :Rtype, :Num); if error then {ROLLBACK; return -2; }(b)
选项
答案
解析
1、同时预订时,可能会产生一个客户订不到或者把同一房订给两个客户依题意,如果两个用户同时要求预订相同日期和相同类别的同一个房间,则可能会产生一个客户订不到房间或者把同一房间预订给两个客户的冲突现象。2、
(1)出现问题:丢失修改,客户1预订a1数量房间后,对空房数量的修改被T2的修改覆盖,造成数据不一致。
(2)XLOCK(A),x1=R(A),W(A,x1-a1),XLOCK(B),UNLOCK(A),W(B1,a1),UNLOCK(B),XLOCK(A),x2=R(A),W(A,x2-a2),XLOCK(B),UNLOCK(A),W(B2,a2),UNLOCK(B)若对并发事务的指令交叉执行不加以控制,则会使每个事务的执行结果相互干扰,破坏事务的隔离性,从而造成数据库的不一致。
本试题中,客户1预订a1数量房间后,对空房数量的修改可能被客户2的修改所覆盖,造成不能体现出客户1已预订的房间数量。该现象属于丢失修改造成的数据库不一致性。在并发状态下,可能会相互干扰破坏事务的ACID属性,加锁机制是保障事务正确执行的一种机制。
2PL协议能够保证事务在并发状态下调度的正确性,即可串行化的调度。针对题干所给出的客户f的房间预订伪指令序列:x=R(A),W(A,x-a),W(B,a),需要在修改房间数量之前加XLock()指令,并保证读/写锁不交叉,即确保客户1释放A上的锁之后客户2才能执行加锁操作。
重写后的房间预订伪指令序列如下。XLOCK(A),x1=R(A),W(A,x1-a1),XLOCK(B),UNLOCK(A),W(B1,a1),UNLOCK(B),XLOCK(A),x2=R(A),W(A,x2-a2),XLOCK(B),UNLOCK(A),W(B2,a2),UNLOCK(B)
3、房间类别=:Rtype AND 日期 BETWEEN :Bdate AND :Edate COMMIT :retum 0;SQL语句"SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;"是SQL提供的事务隔离级别之一。它表示只允许事务读已提交的数据,并且在两次读同一数据时不允许其他事务修改此数据。
依题意,结合题干给出的关键信息"(1)客户查询指定日期内所有类别的空余房间数,系统显示空房表(日期,房间类别,数量)中的信息"可得,空缺处应填入"房间类别=:Rtype AND 日期 BETWEEN :Bdate AND :Edate"。在程序中,事务是以COMMIT语句或ROLLBACK语句结束。结合该程序中已给出的代码"if error then {ROLLBACK; return -1;)"和"if error then {ROLLBACK; return -2;}"可得,空缺处应填入"COMMIT; return 0;"。
转载请注明原文地址:https://tihaiku.com/congyezige/2419340.html
本试题收录于:
中级 数据库系统工程师题库软件水平考试初中高级分类
中级 数据库系统工程师
软件水平考试初中高级
相关试题推荐
某一网络由于网关故障不能进行Internet接入,采用抓包工具捕获的结果如下图所
以下关于木马程序的描述中,错误的是A.木马分为客户端和服务端 B.木马经常被伪
TP客户登录后上传文件使用的连接是(49),该连接的默认端口为()。A.建立在T
TP客户登录后上传文件使用的连接是(),该连接的默认端口为(50)。A.20
DHCP客户机首次启动时需发送(请作答此空)报文请求分配IP地址,该报文中目的主
DHCP客户端在首次启动时向DHCP服务器发送分配IP地址的请求报文,之后DHC
DHCP服务器第一次收到客户端的地址请求报文后,会回复(请作答此空)消息,该报文
以下DNS服务器中负责非本地域名查询的是()A.缓存域名服务器 B.主域名服务
在WWW服务器与客户机之间发送和接收HTML文档时,使用的协议时_(10)_。A
DHCP协议的功能是()A.为客户自动进行注册 B.为客户机自动配置I
随机试题
Thinnerisn’talwaysbetter.Anumberofstudieshaveconcludedthatnormal-weig
[originaltext](Ring...ring...Soundofphonebeingpickedup.)M:Hello,Cam
催化合成DNA反应的酶是A.RNA聚合酶 B.DNA聚合酶 C.逆转录酶
导游员完成角色转换的方法主要有( )。A.通过旅游者的反馈,找出与自己期望所扮
男,70岁,右腹股沟区肿块3年,平卧消失,查体:右耻骨结节外上方有一半球形肿块,
A.肝 B.心 C.脾 D.肺 E.肾"气血生化之源"是()
黄柏酒炙A.补血止血B.滋阴降火,退虚热C.清湿热并具收敛之性D.泻火解毒,燥湿
Thegovernmentisdebatingtheeducation
网络图中的关键线路是()。A.对质量影响最大的线路B.所有线路中耗时最多的线
在税务行政复议期间,行政复议中止的情形包括()。A.案件涉及法律适用问题,需要有
最新回复
(
0
)