mysql中出现幻读的两种解决方法
1.多版本并发控制(MVCC)
多数数据库都实现了多版本并发控制,并且都是靠保存数据快照来实现的。事务每次取数据的时候都会取创建版本小于当前事务版本的数据,以及过期版本大于当前版本的数据。其原理时将历史数据存一份快照,所以其他事务增加与删除数据,对于当前事务来说是不可见的。
2.next-key 锁
next-key 锁包含记录锁(行锁)和间隙锁两部分,记录锁是加在索引上的锁,间隙锁是加在索引之间的。其原理是将当前数据行与上一条数据和下一条数据之间的间隙锁定,保证此范围内读取的数据是一致的。