事务管理基础:数据库的并发控制相关知识笔记
1、并发操作的概念介绍
并发操作主要是指在多用户共享的系统当中,可能存在很多用户同时对同一个数据进行操作。并发操作会造成丢失更新、不可重复读、读脏数据。主要原因是事务的并发操作破坏了事务的隔离性。
2、事务调度相关知识
事务调度主要有串行调度、并发调度、可恢复调度三种。
2.1 串行调度
串行调度是指多个事务依次串行执行,并且只有当一个事务的所有操作都执行完成后才可以执行另一个事务的所有操作。
特点:串行调度和执行顺序无关,执行的结果都是稳定和正确的,对于N个事务,最多有N!中正确的串行调度。
2.2 并发调度
并发调度是指利用分时的方法同时处理多个事务。针对N个事务进行并发调度,所产生的调度方案远大于N!个,并且并发调度的结果很有可能是错误的。只有并发调度的结果和串行调度的结果一致,才说明并发调度的结果是正确的。
2.3 可恢复调度
如果事务T1提交失败,则应当撤销T1的影响以保证其原子性。在允许并发执行的系统中,还必须保证依赖T1的任何事务T2也中止。比如T2要读写T1写的数据,则称为T2依赖于T1。
可恢复调度应满足:如果事务T2要读取事务T1写的数据时,事务T1必须要先于T2提交事务。这样T2事务读取的数据才是真实可靠的数据。
3、并发操作带来的危害
3.1 丢失修改
丢失修改主要是指多个事务同时对数据库更新操作,正常情况下应该都执行情况,但会因为并发操作,造成其中某些事务的更新操作丢失。比如12306售票系统,同时售出了两张火车票,但数据库中票数只减少了一张,从而造成了数据的不一致。
丢失修改破坏了事务的隔离性。
3.2 不可重复读
比如事务A首先读取了一条数据,然后执行逻辑的时候,事务B将这条数据改变了,然后事务A再次读取的时候,发现数据不匹配了,这就是所谓的不可重复读了。
通俗来说,当前事务先进行了一次数据读取,然后再次读取到的数据是别的事务修改成功的数据,导致两次读取到的数据不匹配,也就照应了不可重复读的语义。
不可重复读干扰了事务的独立性。
3.3 读脏数据
脏读,其实就是读到了其他的事务回滚前的脏数据。比如事务B执行过程中修改了数据X,在未提交前,事务A读取了X,而事务B却回滚了,这样事务A就形成了脏读。
简单来说,当前事务读到的数据是别的事务想要修改成为的但是没有修改成功的数据。
读脏数据时事务隔离性的破坏而破坏了数据的一致性。
IT技术分享社区
个人博客网站:https://programmerblog.xyz
文章推荐程序员效率:画流程图常用的工具程序员效率:整理常用的在线笔记软件远程办公:常用的远程协助软件,你都知道吗?51单片机程序下载、ISP及串口基础知识硬件:断路器、接触器、继电器基础知识
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2020-01-03 Tomcat常用配置详解
2018-01-03 C#实现图片的无损压缩
2018-01-03 C#实现图片的无损压缩
2018-01-03 C#实现图片的无损压缩