【实验名称】:
事务管理
【实验目标】:
- 通过实验理解事务机制,包括事务的提交、回滚以及死锁;
- 事务的并发控制;
- 理解脏读
【实验具体要求】:
-
- 利用事务完成如下修改:将教师号“1”修改为“4”,同时修改所有使用该教师号作为外键关联的表中的该字段的值;(不能使用on update约束进行修改,需要先删除外键才能成功)
- 创建一个银行账户表,该表包含两列,第一列为账户id,第二列为账户金额。在表中创建两个账户,一个为存储账户,一个为支出账户。存储账户的id为1,金额为100,支出账户的id为2, 金额为50。以上创建的表适用于以下所有的事务实验;
(1)了解事务中回滚的概念并进行以下操作;
-
- 开启一个新事务,查询账户表中的所有数据,然后删除存储和支出账户,查询账户表中的所有数据,记录发生的现象并说明原因;
- 将开启的事务回滚,然后再查询账户表中的数据,记录发生的现象并说明原因。
(2)了解事务提交的概念并进行以下操作;
-
- 开始一个新事务,删除存储账户,然后查询该账户的所有数据,记录发生的现象并说明原因;
- 提交该事务,然后尝试回滚刚提交的事务。观察表中的数据是否会发生变化,记录发生的现象并说明原因。
(3)了解事务阻塞和死锁的概念,并进行以下操作;
-
- 创建一个新的账户表(同上);
- 利用命令行窗口分别开启两个事务会话,并分别开启新的事务;
- 选择一个窗口将支出账户的金额更新为100,然后在第二个窗口当中将支出账户的金额更新为2400,观察这种更新是否会成功,并说明原因;
- 在第一个窗口当中将事务进行提交,在第二个窗口当中进行事务提交,查看支出账户金额
- 再次分别再每个窗口当中开启一个新的事务;
- 在第一个窗口当中将存储账户的金额更新为2400,在第二个窗口中将支出账户的金额更新为2000;
- 然后再在第二个窗口中将存储账户的金额更新为2400,并在第一个窗口中将支出账户的金额更新为2000。两个窗口中的事务会发生什么情况,记录该情况并说明原因;
-
- 演示脏读
(1)创建一个账户表,含有姓名,金额两列,插入两行, 张三 100, 李四 100
(2)分别在两个窗口中,设置隔离级别为读未提交
(3)A窗口假设是张三在操作,张三开启事务,将自己的金额减少了50,李四的金额添加50,让李四查看,B窗口的李四看到钱到账了,满心欢喜。
(4)A窗口的张三回滚操作,过了几天李四再次查看自己的账户,发现不对,钱没到账。
(5)若是将设置隔离级别为不可重复读,(3)中李四看到的是什么?
【实验步骤】:
1.利用事务完成如下修改:将教师号“1”修改为“4”,同时修改所有使用该教师号作为外键关联的表中的该字段的值;(不能使用on update约束进行修改,需要先删除外键才能成功)


2.创建一个银行账户表,该表包含两列,第一列为账户id,第二列为账户金额。在表中创建两个账户,一个为存储账户,一个为支出账户。存储账户的id为1,金额为100,支出账户的id为2, 金额为50。以上创建的表适用于以下所有的事务实验;
(1)了解事务中回滚的概念并进行以下操作;
1) 开启一个新事务,查询账户表中的所有数据,然后删除存储和支出账户,查询账户表中的所有数据,记录发生的现象并说明原因;



再次select,发现表没有了

2) 将开启的事务回滚,然后再查询账户表中的数据,记录发生的现象并说明原因。

最低0.47元/天 解锁文章
1285

被折叠的 条评论
为什么被折叠?



