1 / 20
文档名称:

2022年软考-数据库系统工程师考试题库及全真模拟冲刺卷54(附答案带详解).docx

格式:docx   大小:54KB   页数:20页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

2022年软考-数据库系统工程师考试题库及全真模拟冲刺卷54(附答案带详解).docx

上传人:住在富人区的她 2022/5/30 文件大小:54 KB

下载得到文件列表

2022年软考-数据库系统工程师考试题库及全真模拟冲刺卷54(附答案带详解).docx

相关文档

文档介绍

文档介绍:2022年软考-数据库系统工程师考试题库及全真模拟冲刺卷(附答案带详解)
1. 单选题
(   )并不能减少和防范计算机病毒。
问题1选项
、升级杀毒软件

。要求(不考虑并发性能)在保证余额汇总交易正确性的前提下,不能影响其他存取款或转账交易的正确性。
CREATE PROCEDURE AcctSum(OUT: Amts DOUBLE)
BEGIN
SET TRANSACTION ISOLATION LEVEL(  a  );
BEGIN TRANSACTION;
SELECT sum(balance) INTO : Amts FROM Accounts;
if error// error是由DBMS提供的上一句SQL的执行状态
BEGIN
ROLLBACK;
return -2;
END
INSERT INTO AcctSums
VALUES (getDATE(), getTIME(), (  b  ));
if error // error是由DBMS提供的上一句SQL的执行状态
BEGIN
ROLLBACK;
return-3;
END
(   c   );
END
【问题2】(8分)
引入排它锁指令LX()和解锁指令UX(),要求满足两段锁协议和提交读隔离级别。假设在进行余额汇总交易的同时,发生了一笔转账交易。从101账户转给104账户400元。 这两笔事务的调度如表5-2所示。
表5-2 转账汇总部分事务调度表
(1)请补全表中的空缺处(a)、(b);
(2)上述调度结束后,汇总得到的总余额是多少?
(3)该数据是否正确?请说明原因。
【问题3】(4分)
在【问题2】的基础上,引入共享锁指令LS()和解锁指令US()。对【问题2】中的调度进行重写,要求满足两段锁协议。两个事务执行的某种调度顺序如表5-3所示,该调度顺序使得汇总事务和转账事务形成死锁。请补全表中的空缺处(a)、(b)。
表5-3 转账汇总部分事务调度表
【答案】【问题1】(3分)
(a)SERIALIZABLE
(b):Amts
(c)COMMIT; return 0;
【问题2】(8分)
(1)(a)等待 (b)UX(101),UX(104)
(2)汇总后余额=500+350+550+600=2000
(3)不正确。事务并发过程中,在加锁前,汇总事务已经读取了101账户余额,而转账事务在后面对其进行了更新,所以影响了最终结果。这里是不可重复读问题。
【问题3】(4分)
(a)LX(104),更新104账户余额
(b)LX(101),更新101账户余额
【解析】【问题1】
(a)空根据题干要求“要求(不考虑并发性能)在保证余额汇总交易正确性的前提下,不能影响其他存取款或转账交易的正确性。”因此对效率不作要求,对隔离要求比较高,选择SERIALIZABLE方式。
READ COMMITTED
指定在读取数据时控制共享锁以避免脏读,但数据可在事务结束前更改,从而产生不可重复读取或幻像数据。该选项是 SQL Server 的默认值。
READ UNCOMMITTED
执行脏读或 0 级隔离锁定,这表示不发出共享锁,也不接受排它锁。当设置该选项时,可以对数据执行未提交读或脏读;在事务结束前可以更改数据内的数值,也可以出现在数据集中或从数据集消失。该选项的作用与在事务内所有语句中的所有表上设置 NOLOCK 相同。这是四个隔离级别中限制最小的级别。
REPEATABLE READ
锁定查询中使用的所有数据以防止其他用户更新数据,但是其他用户可以将新的幻像行插入数据集,且幻像行包括在当前事务的后续读取中。因为并发低于默认隔离级别,所以只在必要时才使用该选项。
SERIALIZABLE
在数据集上放置一个范围锁,以防止其他用户在事务完成之前更新数据集或将行插入数据集内。这是四个隔离级别中限制最大的级别。因为并发级别较低,所以应只在必要时才使用该选项。该选项的作用与在事务内所有 SELECT 语句中的所有表上设置 HOLDLOCK 相同。
(b)空是对参数的返回。
(c)空是事务正常提交结束,根据前面的格式可以看到,除了确认提交,还需要返回值,此时返回0。
【问题2】
(1)(a)空读取104账户余额时,该数据已被加写锁,因此需要等待转账事务释放锁;(b)空是对锁的释放。
(2)本题主要考查的是,101账户余额在加锁之前已被读取,会影响结果。最终结果应该是500+350+550+600=2000。
(3