老师演示的例子属不属于幻读问题?
来源:2-4 事务原则与实现:JDBC事务(下)

dimdark
2018-08-04
写回答
1回答
-
我在SQL事务的演示中,先演示了默认情况,也就是“Repeatable read(可重复读)”的隔离级别,然后演示了“Read uncommitted(读未提交)”和“Serializable(序列化)”。
然后幻读、脏读、是否可重复读都是这几种隔离级别的表现。在Repeatable read这种级别下,我们在第一个事务中多次的读某一条记录,期间在另一个事务中修改这条记录。那么,在第一个事务中,两次读同一条记录时,即使在别的事务中这条记录被修改,也能够保证读到的数据是一样的。所以这种方式叫可重复读。
但是,这种方式下,我们不能避免幻读的问题。幻读的产生也是2个事务,在第一个事务中我们修改某一条记录,在另一个事务中,通过一定查询条件获取多条记录,其中包含被第一个事务修改的记录。在第二个事务中,第一次查询完得到一些结果后,在第二个事务中某条记录被修改并提交事务。然后在第二个事务中又查询了一次那些数据,结果,第二次查询的时候,其中那条记录是被修改的状态。也就是两次读到的数据不一样(只存在于查询多个数据的时候)。
网上找到一篇解释的比较清楚的,你也可以再进一步看一下。
012018-08-07
相似问题