数据库实验:脏读与事务隔离级别的探究

需积分: 0 0 下载量 15 浏览量 更新于2024-08-04 收藏 3.88MB DOCX 举报
本次实验是关于《数据库系统实验》,主要聚焦于MySQL数据库中的事务隔离级别和锁定机制的理解。实验在Windows环境下进行,使用的是MySQL命令行工具,针对两个表12-5和12-6进行了操作。 首先,实验者郝裕玮通过在MySQL服务器的bin目录下打开两个cmd窗口,并分别以root权限登录,设置了隔离级别为READUNCOMMITTED。在这个隔离级别下,执行`use jxgl`语句以连接jxgl数据库。在尝试更新grade字段的过程中,发现了一个典型的问题——脏读。由于两个事务之间的不加控制,session_1的未提交修改被session_2读取到了,这违反了事务的隔离性原则。 针对表12-6,实验者演示了解决脏读问题的方法,即提升事务隔离级别。当将隔离级别改为READCOMMITTED时,session_2在session_1进行修改之前无法看到其未提交的数据。此外,实验还展示了两种类型的锁定:排他锁(forupdate)和共享锁(lockinsharemode)。排他锁禁止其他事务读取或修改数据,而共享锁则允许其他事务读取,但禁止修改。当session_1对grade字段添加排他锁时,session_2的共享锁请求被阻塞,直到session_1执行rollback,共享锁才得以获取。 总结来说,本实验着重考察了数据库事务的不同隔离级别对数据一致性的影响,以及锁机制如何确保数据的一致性和并发控制。通过实践,学习者理解了脏读、不可重复读和幻读等事务隔离级别的概念,并掌握了如何在实际操作中应用锁定策略来避免这些问题。这个实验不仅提升了对SQL操作的理解,也强化了数据库并发控制和事务管理的重要性。