老师演示的例子属不属于幻读问题?

来源:2-4 事务原则与实现:JDBC事务(下)

dimdark

2018-08-04

写回答

1回答

大漠风

2018-08-07

我在SQL事务的演示中,先演示了默认情况,也就是“Repeatable read(可重复读)”的隔离级别,然后演示了“Read uncommitted(读未提交)”和“Serializable(序列化)”。

然后幻读、脏读、是否可重复读都是这几种隔离级别的表现。在Repeatable read这种级别下,我们在第一个事务中多次的读某一条记录,期间在另一个事务中修改这条记录。那么,在第一个事务中,两次读同一条记录时,即使在别的事务中这条记录被修改,也能够保证读到的数据是一样的。所以这种方式叫可重复读。

但是,这种方式下,我们不能避免幻读的问题。幻读的产生也是2个事务,在第一个事务中我们修改某一条记录,在另一个事务中,通过一定查询条件获取多条记录,其中包含被第一个事务修改的记录。在第二个事务中,第一次查询完得到一些结果后,在第二个事务中某条记录被修改并提交事务。然后在第二个事务中又查询了一次那些数据,结果,第二次查询的时候,其中那条记录是被修改的状态。也就是两次读到的数据不一样(只存在于查询多个数据的时候)。


网上找到一篇解释的比较清楚的,你也可以再进一步看一下。

0
1
dimdark
非常感谢!
2018-08-07
共1条回复

分布式事务实践,从原理到实例,解决数据一致性

掌握分布式事务实现技术,是架构师必备技能。

1149 学习 · 153 问题

查看课程