可重复读隔离级别下如何避免了脏读、不可重复读,为什么会发送幻读

110 阅读1分钟

可重复读是通过mvcc多版本并发控制来实现的,他会让事务在开始时候,基于这个事务开始之前其他事务提交的所有数据做一个快照,事务内读取数据都是快照读,这样就不会读到其他事务在这个事务开始之后对快照内的数据的修改,也就避免了多次读取数据不一样,以及读到别人未提交的数据;但是mvcc允许幻读,mvcc允许新插入的数据立即生效在各个事务的快照读中,因为新插入的数据独立于现有记录版本,不影响快照内的数据

	对于已存在的记录,事务只能看到在事务开始时已经提交的版本,不会看到事务开始后其他事务对这些记录所做的修改。
	对于新插入的记录,事务可以立即看到,只要这些记录是在事务开始后由其他事务插入的,并且这些插入操作已经提交
            
            

可重复读隔离级别能够在保证一定程度的一致性的同时,维持较高的并发性能,因为它不需要对新插入的记录加锁,也不需要维护这些记录的历史版本,从而减少了锁的竞争和版本管理的开销。