(互评中碰到雷同的实验报告请给以下各项均0分) (评分...
(互评中碰到雷同的实验报告请给以下各项均0分) (评分时遵循“总分公平合理”,比如打分过程中出现觉得应该给0.5分,那么可以第一个0.5进位,第二个0.5舍去,依次类推;或第一个0.5舍去第二个0.5进位等等)实验 第十六周 事务与并发控制(43分) 1. 实验目的(1分) (1) 了解事务的概念。 (2) 了解事务的特性。 (3) 了解事务的故障恢复及并发控制。 (3条及以上的得满分;否则按不完整比例扣分) 2. 实验原理(1分) (自己总结与本次实验内容相对应的视频、教材上的知识点,2条及以上的得满分;否则按不完整比例扣分) 3. 实验内容(1分) 针对考试系统数据库,进行以下相关的操作: (1) 将多个SQL语句定义为一个事务,执行过程中人为制造故障,分析系统恢复的情况。 (2) 为事务设置保存点,并实现事务提交与回滚。 (3) 并发执行多个事务,运行并分析隔离性。 (3条及以上的得满分;否则按不完整比例扣分) 4. 实验作业(2+3+3+4+15=27分) 在数据库中创建考生成绩表eeexam,结构如下表所示,按要求进行操作。 eeexam表结构 属性名 属性说明 数据类型 说明 eeid 考生号 VARCHAR(15) 主键,非空 eid 试卷号 VARCHAR(10) 主键,非空 achieve 考试成绩 INT 非空 (eeexam表创建正确得1分,注意eeid和eid作为联合主键) 向eeexam表中插入如下数据。 表eeexam中插入记录 eeid eid achieve 0000 001 98 0001 001 90 (正确向eeexam表中插入数据得1分) (1) 设计Java程序,将考生号为0000的考生的试卷号为001的成绩减1分,而给考生号为0001的试卷号为001的考生的成绩加1分,中间穿插多个较长时间的其他无关SQL语句,并不把这些操作作为事务;执行这些操作并在中间其他无关代码运行期间人为中断执行过程,分析数据表恢复情况。(3分) (Java程序正确得2分,否则按不完整比例扣分;分析数据表正确得1分(成功给0000的考生减1分,但是没有给0001的考生加1分)) (2) 设计Java程序,将考生号为0000的考生的试卷号为001的成绩减1分,而给考生号为0001的试卷号为001的考生的成绩加1分,中间穿插多个较长时间的其他无关SQL语句,并把这些操作定义为一个事务;执行事务并在中间其他无关代码运行期间人为中断执行过程,分析数据表恢复情况。(3分) (Java程序正确得2分,否则按不完整比例扣分;分析数据表正确得1分(数据表没有任何变化,即不给0000的考生减1分也不给0001的考生加1分)) (3) 设计事务语句,实现往eeexam表里插入多条数据,保存多个保存点。在该事务中,需测试保存点的回滚,释放保存点,整个事务回滚,以及事务提交。(4分) (每个测试点各占一分,该题满分4分)) (4) 在以下两种隔离级别下,并发执行两事务,观察其运行结果:(8+7=15分) 事务A:查询eeexam表的所有记录,重复三次; 事务B:往eeexam表中插入记录(0002,001,100); 事务C:查询eeexam表中的所有记录; 事务D:往eeexam表中插入记录(0003,001,99); a. 在读已提交隔离级别下,先开始执行事务A至第一条查询语句(不提交),观察结果;再执行事务B(不提交),观察结果;接着执行事务A的第二条查询语句,观察结果;再提交事务B;最后执行事务A的第三条查询语句,观察结果。(8分) (两事务SQL语句每个各占2分;四个结果观察正确各占1分;观察结果应满足只有在事务B提交后事务A的查询结果才发生变化;该题满分8分) b. 在序列化隔离级别下,先开始执行事务C(不提交),观察结果;接着执行事务D,观察结果; 再次执行事务C的查询,观察结果。(7分) (两事务SQL语句每个各占2分;三个结果观察正确各占1分;观察结果应满足事务C的查询结果不受事务D提交的影响;该题满分7分) 5. 实验思考(1+2=3分) (1) 数据库管理系统是如何保证原子性的?(1分) (1条及以上的得满分;否则按不完整比例扣分) (2) 数据库管理系统是如何保证隔离性的?(2分) (2条及以上的得满分;否则按不完整比例扣分) 6. 实验体会(1分) (自己总结一点及以上者,得1分;否则,酌情扣分) 7. 版式评分(9分) (1) 作业是否整体排版清晰:若是,得 2 分;否则,得 0 或 1 分。 (2) 作业是否整体截图完整且附有说明:若是,得 2 分;否则,得 0 或 1 分。 (3) 作业是否不出现个人信息且提交格式是否正确:若是,得 5 分;否则,得 0 分。