- pdf 下载:明码 7281
- 专栏目录首页:【专栏必读】(考研复试)数据库系统概论第五版(王珊)专栏学习笔记目录导航及课后习题答案详解
一:事务运行形式
(1)概述
事务的运行形式次要分为 串行 和并行
- 串行:每个时刻只有一个事务运行
- 并行:同一时刻能够有多个事务同时运行
串行和并行的优缺点如下表,并行效率确实很高,然而会毁坏事务的隔离性。因而 要在保障一致性的前提下最大限度的进步并发度
不过须要留神的是,在操作系统中就说到过,单解决零碎中,所谓的并行实际上是 宏观上的并行运行,宏观上的串行运行 ,也即 穿插并发
- 本章探讨的并发特指穿插并发
咱们把 容许多个用户同时应用同一个数据库的数据库系统称之为多用户数据库系统,在这种零碎中,同一时刻并发运行的事务数量相当宏大。例如咱们常常在应用的 12306 就是一个很典型的例子
(2)计算
两个事务 $S$ 和 $T$,其中 $S$ 有 $m$ 条指令,$T$ 有 $n$ 条指令,且每个事务外部指令的绝对程序不能错乱,那么可能的执行程序有 $R$ 种
$$R=C^{m}_{m+n}=C^{m+n}_{m}=\frac{(m+n)!}{m!n!}$$
(3)调度
调度:事务的一次执行程序称之为一个调度,示意事务的指令在零碎中执行的工夫程序、一组事务的调度必须保障
- 蕴含了 所有事务 的操作指令
- 一个事务中 指令的程序 必须放弃不变
(4)串行调度和并发调度
- 串行调度 :属于同一事务的指令 紧挨在一起执行 ,对于有 $n$ 个事务的事务组,能够有 $n$! 个 无效调度
- 并发调度 :来自不同事务的指令能够 穿插执行 。并发调度有可能会导致谬误后果, 仅当并发调度等价于某个串行调度时,则称该并发调度时可串行化的、正确的
二:并发管制
(1)并发操作带来的数据不一致性问题
次要有三类数据不一致性问题
- 失落批改
- 读脏数据
- 不可反复读
以如下飞机订票零碎中的流动序列为例
①甲售票点(事务 $T_{1}$) 读出某航班的机票余额 A,设 A =16
②乙售票点 (事务 $T_{2}$) 读出同一航班的机票余额 A,也为 16。
③甲售票点卖出一张机票,批改余额 A←A-1,所以 A 为 15,把 A 写回数据库。
④乙售票点也卖出一 - 张机票,批改余额 A -A-1,所以 A 为 15,把 A 写回数据库。
A:失落批改
失落批改:两个以上事务从数据库中读入同一数据并批改,其中后提交事务的提交后果毁坏了先提交事务的提交后果,导致了先提交事务对数据库的批改失落
在下面例子中,两个事务 $T_{1}$ 和 $T_{2}$ 读入同一数据并批改,然而 $T_{2}$ 提交的后果毁坏了 $T_{1}$ 提交的后果,导致 $T_{1}$ 的批改被失落
B:读脏数据
读脏数据:事务 1 批改某一数据,并将其写回磁盘;事务 2 读取同一数据后,事务 1 因为某种原因被撤销,这时事务 1 已批改过的数据被复原为原值,事务 2 读到的不稳固的霎时数据就与数据库中的数据产生了不统一,是不正确的数据,又称为脏数据
例如 $T_{1}$ 将 C 值批改为 200,$T_{2}$ 读到 C 为 200,此时 $T_{1}$ 因为某种原因被撤销,因而 C 复原为原值 100,这时 $T_{2}$ 读到的 C 为 200,属于读脏
C:不可反复读
不可反复读:事物 1 读取数据后,事物 2 执行更新操作,使事物 1 无奈再现前一次读取后果。共有三种状况
- 事物 2 批改了 事物 1 所读数据,当事物 1 再次读该数据时,失去了 与前一次不同的值
- 事务 2 删除了 其中局部记录,当事务 1 再次按雷同条件读取数据时,发现 某些记录神秘地隐没 了
- 事务 2 插入了 一些记录,当事务 1 再次按雷同条件读取数据时,发现 多了一些记录
(2)并发管制概念
并发管制:如果多个用户并发存取数据的行为不加以控制,那么极有可能毁坏事务的隔离性和一致性。因而并发管制就是为了保障多用户并发操作数据库中信息时的正确性、一致性所采取的措施
(3)并发管制工作
- 对并发操作进行正确调度
- 保障事物的隔离性
- 保障数据库的一致性
(4)并发管制办法
- 加锁(Locking)
- 乐观假如(Optimistic)
- 工夫戳(Timestamp)
- 多版本并发管制(MVCC)