MySQL   发布时间:2022-05-15  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了MySQL事务的不可重复读大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

不可重复读——NON-REPEATABLE READ 是指事务中,两次查询的结果不一致,原因,在查询的过程中,其他事务做了更新的操作

脏读,是读取了前一个事务,未提交的脏数据 不可重复读,是在事务内重复读取了,别的线程已提交的数据

<h3 id="演示不可重复读">演示不可重复读

B账户,开启一个事务,在事务中查询各账户的余额

title="MySQL事务的不可重复读" alt="MySQL事务的不可重复读" src="http://code.js-code.com/res/2019/01-02/09/930fe33bf5759209762c642980c91840.jpg" >

A账户,不用开启事务,直接使用update语句执行更新操作

title="MySQL事务的不可重复读" alt="MySQL事务的不可重复读" src="http://code.js-code.com/res/2019/01-02/09/3214c63a3ca8fb78fcd4cd2d9ae2b9ea.jpg" >

由于,a账户,只需要执行修改的操作,不需要保证同步性,因此,直接执行sql语句就可以

查询a账户的余额

title="MySQL事务的不可重复读" alt="MySQL事务的不可重复读" src="http://code.js-code.com/res/2019/01-02/09/5ea0ace92dad10f73817e7f3a7d9c780.jpg" >

B账户,当a账户的更新操作执行成功后,在b账户中,再次查询各账户的余额

title="MySQL事务的不可重复读" alt="MySQL事务的不可重复读" src="http://code.js-code.com/res/2019/01-02/09/2eb41f2806b990568153e090900f74c1.jpg" >

可以发现,两次查询的结果不一致,这种操作是没错的,但是,如果银行统计报表时,这种情况是不符合需求的,演示完成,将b账户中的事务提交

我们,不希望在一个事务中,看到的查询结果不一致,这就是不可重复读 设置b账户中,事务的@R_673_10954@ B账户,为了防止重复读的情况,将事务的@R_673_10954@设置为REPEATABLE READ——可重复读

title="MySQL事务的不可重复读" alt="MySQL事务的不可重复读" src="http://code.js-code.com/res/2019/01-02/09/db92e572dcd77588163504eed55c62da.jpg" >

可以看出,b账户的@R_673_10954@设置为REPEATABLE READ;

<h3 id="验证是否出现不可重复读">验证是否出现不可重复读

B账户,在b账户中,开启一个事务,查询当前账户的余额

title="MySQL事务的不可重复读" alt="MySQL事务的不可重复读" src="http://code.js-code.com/res/2019/01-02/09/889c38a3d9b9d55b676323b02d353d0b.jpg" >

A账户,在a账户中,不开启事务,直接使用update语句执行更新操作

title="MySQL事务的不可重复读" alt="MySQL事务的不可重复读" src="http://code.js-code.com/res/2019/01-02/09/c0b1e54a716f56ebfbe6adf79b513cec.jpg" >

B账户,当a账户中update语句执行成功后,b账户在当前事务中,查询各账户的余额

title="MySQL事务的不可重复读" alt="MySQL事务的不可重复读" src="http://code.js-code.com/res/2019/01-02/09/bd7a083edffa82fa2326d9504fACB59e.jpg" >

可以看出,两次查询的结果一致,演示完成,将b账户的事务提交 因此,事务的@R_673_10954@为REPEATABLE READ时,可以避免重复读的情况

大佬总结

以上是大佬教程为你收集整理的MySQL事务的不可重复读全部内容,希望文章能够帮你解决MySQL事务的不可重复读所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:原因