首页 / MYSQL / MYSQL事务有关的特性
MYSQL事务有关的特性
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MYSQL事务有关的特性,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1787字,纯文字阅读大概需要3分钟。
内容图文
![MYSQL事务有关的特性](/upload/InfoBanner/zyjiaocheng/518/33d7e492e53c45d9b34fa155be4f2053.jpg)
不同事务同时进行读写操作时,有可能出现以下情况:
脏写,脏读,不可重复读,幻读
它们之间对读写操作结果的影响性由高到低。
1,脏写,就是指——开启事务后对某一张表写入数据并成功提交后,最终的数据却并没有真正存进表里的现象。好像这数据白写了一样,此之为“脏写”。
情景例子:
假设有2个事务A和B在某一时刻(暂且称呼为0点)一起开启了,它们即将要对某一张表(暂时假定为银行账号)进行扣款写操作。
0点时,账号存款是100块。两个事务已经一起开启,事务A想扣除50块,事务B想扣除70块,(因为存款是100,它们的操作都是合法的)。
但是因为某些原因事务B延迟了,事务A首先扣除了50块,然后事务A提交了,账号的存款余额为50块,事务A所在的线程继续做扣款后的后续作业,但此时事务B未进行。
紧接着,事务B终于开始对该账号扣除70块钱操作了,但此时存款余额已经不足以扣除70块,导致了事务回滚。存款余额回到0点,变回100块。
但刚刚的事务A已经提交了,也成功了,它可能因为提交成功已经得到授权做另外一些事情了。这就造成事务A成功扣除了(实际未被扣除的)50块。
这就是脏写,即写了白写。
2,脏读,就是读了不存在的数据,此之为“脏读”。
情景例子:
还是上面的例子,0点时,账号存款是100块。假设事务A要检查这个账号的主人是否百万富翁。而事务B则是有人向这个账号汇款了100万。
但是因为某些原因,这次事务A延迟了,事务B先执行,此时账号存款为100万零100,但事务B还没提交。
然后紧接着,事务A终于开始查询该账号存款余额,发现是100万零100,确实是百万富翁后,提交了事务,然后事务A就接着做后续作业了。
此时,事务B发现汇错款了,要回滚事务,存款余额回到0点,变回100块。
但刚刚的事务A已经提交了,已经确认了(实际并不是)百万富翁的账号。
这就是脏读,读了不存在的数据。
未完待续。
MYSQL事务有关的特性
标签:假设 影响 可重复 百万富翁 mda 操作 重复 mysql 回滚事务
本文系统来源:https://www.cnblogs.com/alvinleung/p/12147615.html
内容总结
以上是互联网集市为您收集整理的MYSQL事务有关的特性全部内容,希望文章能够帮你解决MYSQL事务有关的特性所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。