FD日包原理–个人见解

举转账那个例子吧!

假设你的账号上有 1000 元,你转账给朋友 100 元,然后又向账号汇入 100 元,请问你的账号上余额是多少?是不是太简单了,小学生都会算,当然还是 1000 元,对吧。 整个流程如下:

查看账号余额为 1000 元
转账给朋友 100 元,账号余额为 900 元
再查看账号余额为 900 元
汇入100 元到账号,账号余额为 1000 元
现在,假设你向朋友的转账和汇款是同时(并发)进行的,整个流程可能如下:

查看账号余额为 1000 元(转账查看)
查看账号余额为 1000 元(汇款查看)
转账给朋友 100 元,账号余额为 900 元
汇入100 元到账号,账号余额为 1100 元
那么,结果是现在账号余额居然是 1100 元。显然,正确的结果应该是 1000 元,呵呵,这就是数据库访问的并发性问题。

其实,数据库访问的并发性问题有很多种情况,以上这种情况只是其中的一种叫更新丢失。

更新丢失
如果多个事务同时(并发)对数据库表中的同一条记录进行修改,那么后修改的记录将会覆盖前面修改的记录,前面的修改就丢失掉了,这就叫做更新丢失。如下图:

说白了,由于你请求的过快,然后每次请求都会先读取数据库的数据,你读取时前面的业务逻辑还没处理完,数据库还没更新,直到第一个请求数据处理完时,数据库发生改变,只要是第一次请求处理后的同样请求都会失败,第一次请求到第一次处理完期间的请求都会成功(这个期间请求数据库的数据返回的都是一样的,查询余额永远为1000元),,,这就是为什么r包 有一部分成功的原因,如果还不理解多读读上面的文字。

小青年资源网
免责声明 做视频的初衷是为了学习交流,是想让自己在分享过程中学习到更多的东西。 所发布的视频、环境、软件、脚本、文章、资料等,都是为了 粉丝们群友们能够更好的去理解安全测试的知识点。 本人发布的视频、环境、软件、脚本、文章、资料等,都只用于学习交流安全技术,请不要用于任何非法用途, 否则后果自付。 同时欢迎各位粉丝大佬,举报用 本人发布的环境、软件、脚本、文章、资料等,做任何违法犯罪事情的人。 根据二○一三年一月三十日《计算机软件保护条例》2次修订第17条规定: 为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存 储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬! 鉴于此,也希望大家按此说明研究软件! 本站所有源码都来源于网络收集修改或者交换!如果侵犯了您的权益,请及时告知我们,我们即刻处理! 最终解释权归本视频所有。
小青年技术网 » FD日包原理–个人见解