数据库原理与应用 第 9 章 · 第二节
课程第 9 章第二节 并发控制丢失更新读脏数据不可重复读幻象读串一遍 版式
第 9 章 数据库并发控制与封锁 · 第二节

四种数据不一致性

并发不加控制会出的四种错,它们的名字、时间轴和区别。
本 节 知 识 点
  1. 13合理调度并发事务的技术
  2. 14A:我改的被你盖掉了
  3. 15B:读到了别人还没提交的值
  4. 16C:同一笔事务里两次读不一样
  5. 17D:行数忽多忽少
  6. 18四种不一致性的全景
13
第 9 章 · 第二节

合理调度并发事务的技术

多个用户同时操作同一份数据叫并发操作,管住它叫并发控制。

第 13 页课件

关键术语

Co
n

重 点

并发控制不是禁止并发,是让并发跑出来的结果和一个一个跑一样。

想一想

两个人同时查同一张表,需要并发控制吗?

14
第 9 章 · 第二节

A:我改的被你盖掉了

两笔事务都读到 1000,各自算完写回,先写的那笔像没做过。

第 14 页课件

关键术语

Lo
s

重 点

两个人都是拿旧值算的,后写的那个把前一个的结果整个盖掉。

知道更多更正

这张图在 InnoDB 上做不出来,第二句 UPDATE 会被行锁卡住等着。

上机做

上机二第 1 题 亲手试试盖不盖得掉

15
第 9 章 · 第二节

B:读到了别人还没提交的值

T1 改成 900 没提交,T2 读走了,T1 一回滚这个 900 就是假的。

第 15 页课件

关键术语

Di
r

重 点

脏的意思是这个值可能被撤销,拿它去算就全错了。

打个比方

同事说方案定了,你照着做,结果他那边还没签字最后又改了。

上机做

上机二第 2 题 亲手读一次脏数据

16
第 9 章 · 第二节

C:同一笔事务里两次读不一样

两次查询之间别人改完提交了,第二次读出来的值变了。

第 16 页课件

关键术语

Un
r

分清楚和脏读比

异常读到的是
脏读没提交的
不可重复读已提交的

重 点

读到的是合法的已提交数据,问题出在同一笔事务里前后对不上。

17
第 9 章 · 第二节

D:行数忽多忽少

同样的条件查两次,别人插了一行或删了一行,记录条数变了。

第 17 页课件

关键术语

Ph
a

分清楚分清楚

异常变的是
不可重复读某一行的值
幻象读行的条数

重 点

考试常考这一对的区别:一个是值变了,一个是多出来或少掉一行。

试一试四种错摆一起看

看哪种
时刻事务 T1库里的 R事务 T2
18
第 9 章 · 第二节

四种不一致性的全景

并发操作不加控制会出四种错,后面两节讲怎么一层层挡掉。

第 18 页课件

记牢它四个词

  1. 盖掉了
  2. 读到假的
  3. 两次不一样
  4. 行数变了

重 点

丢失更新是写和写打架,另外三种都是读撞上了别人的写。

想一想

四种里哪一种是写和写之间的问题?

保山学院·人工智能教研室·曹鼎鼎