Java教程

怎么解决幻读?

本文主要是介绍怎么解决幻读?,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

脏读、不可重复读、幻读,这是概念,如果不理解,听起来会很懵逼。


脏读,是两个事务相互影响,导致数据不准,读未提交会导致脏读、不可重复读、幻读。


不可重复读,是同一个事务里面,每次读取的数据不一样,读已提交。引入了快照的概念,读取的是快照,快照有不同的版本号,根据版本号可以判断事务提交的先后顺序。避免了数据的混乱。如果A事务开始之后,B事务修改并提交了同一条数据,那么A事务会从undo log里面找到B事务开始之前的数据。实现可重复读,使用的是mvcc,多版本并发控制。


幻读,是数据新增导致的,因为新增的数据不在库里面,无法通过上面的方法控制。得用间隙锁控制,通过对区间加锁来解决幻读的问题。



这篇关于怎么解决幻读?的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!