demo,理解mysql的可重复读隔离级别,当前读、快照读的区别
如下图,表sys_user中我同时开启三个事务连接:
session1:
当session1开启事务时,mysql使用快照读保存事务开始前的数据,所以这条事务未提交前,查询的结果都是最开始保存的数据。
无论session2还是session3,查询结构都是0。
session2
session2开启事务,执行一条update语句,mysql开始当前读,对当前修改的行加锁。此时查询出来的值是最新值。
查询结果是最新值。
session3
session3执行语句,此时它也想要修改数据,由于2还没提交事务,它只能等待2释放锁。
ps:如果session3先执行,他是自动提交事务的。session2就会在3的基础上在更新。