文章详情

短信预约信息系统项目管理师 报名、考试、查分时间动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

数据库并发与并发异常

2016-03-22 20:45

关注


	数据库并发与并发异常
[数据库教程]

数据库并发与并发异常

本文关键字:脏读、脏写、更新丢失、不可重复读、幻读

在使用数据库来支撑业务系统时,随着用户量的增大,经常会遇到同时读取相同数据的情况,在没有进行并发控制的情况下就会遇到各种各样的问题,对于可能出现的问题我们要有所了解。

一、什么是并发

并发指的是在同一时间,有多个程序都处在启动运行到运行完毕之间的状态,并且都在同一个处理机上运行。
对于数据库来说,数据库并发指的就是在同一时间内,有多个事务都处在开始到提交之间的状态,并都在同一个数据库服务中。

二、常见并发异常

假设不做任何的并发控制,让那些对数据的操作自由执行,将会遇到下列的问题:

1. 脏读

脏读指的是一个事务A在运行时读取了另一个失败事务B未提交的数据,这就导致事务B回滚后,事务A读取到了一个与数据库记录冲突的错误数据。
技术图片
数据库中某条数据的money值为20,在处理过程中,事务B修改值为100,随后被事务A读取,接下来事务B因为其他环节的错误导致回滚,money的值被还原为20,这时事务A所读取的数据即为脏数据(错误数据)。

2. 脏写

脏写指的是一个事务A一同回滚了另外一个事务B已经提交的数据,这将导致事务B已经执行成功的操作一同被回滚。
技术图片
事务B先于事务A执行成功,但随后事务A回滚,将事务B的提交内容一同回滚。

3. 更新丢失

更新丢失指的是事务A与事务B均提交成功,但是由于读取和写入的时间点问题,导致事务B的修改结果好像未生效一样。
技术图片
最初数据库中money的值为20,在事务B提交成功后money的值为40,按正常逻辑事务A将money的值减去20,结果应为20,但对事务A来说读取到的值为20,导致最后结果为0

4. 不可重复读

不可重复读指的是由于另外一个事务B对数据的操作,导致事务A前后两次读取到的结果不一致。与脏读的主要区别是:一个读取的是已经被回滚的数据,一个读取的是已经成功提交后的数据,但前后并不一致。
技术图片

5. 幻读

幻读指的是读取某个范围的数据时,因为有其他事务的操作导致前后两次的查询结果不同。不可重复读与幻读的主要区别在于不可重复读是一条具体数据的不一致,幻读是对一组数据的前后不一致。
技术图片
在事务B执行前,事务A得到的结果集为:1,3,4,7,在事务B插入一个新的账户:8后,事务A得到的结果集为:1,3,4,7,8

数据库并发与并发异常

原文地址:https://blog.51cto.com/10984944/2514454

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯