其他分享
首页 > 其他分享> > innodb uncommited read实现原理

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