innodb uncommited read实现原理
作者:互联网
事务A先执行
事务B随后执行
B只有再A事务结束后才会执行update操作,因为A事务对该行添加了写锁,且执行完更新操作不会释放,只有事务执行完成或者事务回滚后才会释放写锁,然后B事务开始操作。当A事务执行完更新操作时,数据库中的name确确实实变为了3。
若AB都执行成功,在这30秒内,name的值先变为3,再变为4
若A执行失败,B执行成功,则在这30秒内,name的值先变为3,再变为1,再变为2
若A先执行失败,B再执行失败,name的值先变为3再变1再变2再变1
若B先执行失败,A再执行失败,name先变为3再变为1
原理:没有加入MVCC与快照机制,事务读到的就是当前数据库的真值,同时添加了写锁,保证不同事务的先后顺序,从而确保了原子性,没有添加读锁,所以查询效率很高,但是可能造成脏读和不可重复读。
参考文献:
https://blog.csdn.net/weixin_36477469/article/details/113439667
标签:事务,uncommited,name,read,变为,innodb,失败,执行,再变 来源: https://www.cnblogs.com/sjj123/p/16434787.html