事务管理基础:数据库的并发控制相关知识笔记

举报
IT技术分享社区 发表于 2023/01/16 22:45:39 2023/01/16
【摘要】  1、并发操作的概念介绍并发操作主要是指在多用户共享的系统当中,可能存在很多用户同时对同一个数据进行操作。并发操作会造成丢失更新、不可重复读、读脏数据。主要原因是事务的并发操作破坏了事务的隔离性。2、事务调度相关知识事务调度主要有串行调度、并发调度、可恢复调度三种。2.1 串行调度串行调度是指多个事务依次串行执行,并且只有当一个事务的所有操作都执行完成后才可以执行另一个事务的所有操作。特点:...

 

image.png

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就形成了脏读。

简单来说,当前事务读到的数据是别的事务想要修改成为的但是没有修改成功的数据。

读取脏数据时事务隔离性的破坏而破坏了数据的一致性。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。