第十一章-并发控制概要PPT课件

合集下载

(完整版)第11章并发控制(习题集)

(完整版)第11章并发控制(习题集)

第十一章并发控制(习题集)二、选择题1、为了防止一个用户的工作不适当地影响另一个用户,应该采取(D)。

A. 完整性控制B. 访问控制C. 安全性控制D. 并发控制2、解决并发操作带来的数据不一致问题普遍采用(A)技术。

A. 封锁B. 存取控制C. 恢复D. 协商3、下列不属于并发操作带来的问题是(C)。

A. 丢失修改B. 不可重复读C. 死锁D. 脏读4、DBMS普遍采用(C)方法来保证调度的正确性。

A. 索引B. 授权C. 封锁D. 日志5、如果事务T获得了数据项Q上的排他锁,则T对Q(C)。

A. 只能读不能写B. 只能写不能读C. 既可读又可写D. 不能读也不能写6、设事务T1和T2,对数据库中地数据A进行操作,可能有如下几种情况,请问哪一种不会发生冲突操作(D)。

A. T1正在写A,T2要读AB. T1正在写A,T2也要写AC. T1正在读A,T2要写AD. T1正在读A,T2也要读A7、如果有两个事务,同时对数据库中同一数据进行操作,不会引起冲突的操作是(D)。

A. 一个是DELETE,一个是SELECTB. 一个是SELECT,一个是DELETEC. 两个都是UPDATED. 两个都是SELECT8、在数据库系统中,死锁属于(B)。

A. 系统故障B. 事务故障C. 介质故障D. 程序故障9、数据库中的封锁机制是( C )的主要方法。

A、完整性B、安全性C、并发控制D、恢复三、填空题1、基本的封锁类型有两种:__排他锁__ 和_共享锁_ 。

2、并发操作可能会导致:丢失修改、不可重复读、读脏数据。

四、简答题1、什么是封锁?2、基本的封锁类型有几种?试述它们的含义。

3在数据库中为什么要并发控制?答:数据库是共享资源,通常有许多个事务同时在运行。

当多个事务并发地存取数据库时就会产生同时读取或修改同一数据的情况。

若对并发操作不加控制就可能会存取和存储不正确的数据,破坏数据库的一致性。

所以数据库管理系统必须提供并发控制机制。

数据库系统概论CH11(部分)习题解答

数据库系统概论CH11(部分)习题解答

第十一章并发控制事务处理技术主要包括数据库恢复技术和并发控制技术。

本章讨论数据库并发控制的基本概念和实现技术。

本章内容有一定的深度和难度。

读者学习本章一定要做到概念清楚。

一、基本知识点数据库是一个共享资源,当多个用户并发存取数据库时就会产生多个事务同时存取同一个数据的情况。

若对并发操作不加控制就可能会存取和存储不正确的数据,破坏数据库的一致性。

所以DBMS必须提供并发控制机制。

并发控制机制的正确性和高效性是衡量一个DBMS性能的重要标志之一。

①需要了解的: 数据库并发控制技术的必要性,活锁死锁的概念。

②需要牢固掌握的: 并发操作可能产生数据不一致性的情况(丢失修改、不可重复读、读“脏数据”)及其确切含义;封锁的类型;不同封锁类型的(例如X锁,S锁)的性质和定义,相关的相容控制矩阵;封锁协议的概念;封锁粒度的概念;多粒度封锁方法;多粒度封锁协议的相容控制矩阵。

③需要举一反三的:封锁协议与数据一致性的关系;并发调度的可串行性概念;两段锁协议与可串行性的关系;两段锁协议与死锁的关系。

④难点:两段锁协议与串行性的关系;与死锁的关系;具有意向锁的多粒度封锁方法的封锁过程。

二、习题解答和解析1. 在数据库中为什么要并发控制? 并发控制技术能保证事务的哪些特性?答数据库是共享资源,通常有许多个事务同时在运行。

当多个事务并发地存取数据库时就会产生同时读取和/或修改同一数据的情况。

若对并发操作不加控制就可能会存取和存储不正确的数据,破坏事务的一致性和数据库的一致性。

所以数据库管理系统必须提供并发控制机制。

并发控制技术能保证事务的隔离性和一致性。

2. 并发操作可能会产生哪几类数据不一致? 用什么方法能避免各种不一致的情况?答并发操作带来的数据不一致性包括三类:丢失修改、不可重复读和读“脏”数据。

(1) 丢失修改(Lost Update)两个事务T1和T2读入同一数据并修改,T2提交的结果破坏了(覆盖了)T1提交的结果,导致T1的修改被丢失。

并发控制

并发控制

第11章 并发控制一、选择题:1、.设有两个事务T1、T2,其并发操作如下所示,下面评价正确的是 。

A .该操作不存在问题B .该操作丢失修改C .该操作不能重复读D .该操作读“脏”数据 答案:B2、设有两个事务T1、T2,其并发操作如下所示,下面评价正确的是 。

A .该操作不存在问题B .该操作丢失修改C .该操作不能重复读D .该操作读“脏”数据答案:C3、设有两个事务T1、T2,其并发操作如下所示,下列评价正确的是 。

A .该操作不存在问题B .该操作丢失修改C .该操作不能重复读D .该操作读“脏”数据 答案:D4、解决并发操作带来的数据不一致性总是普遍采用 。

A .封锁B .恢复C .存取控制D .协商 答案:A5、若事务T 对数据R 已经加X 锁,则其他事务对数据R 。

A.可以加S锁不能加X锁B.不能加S锁可以加X锁 C.可以加S锁也可以加X锁D.不能加任何锁答案:D6、关于“死锁”,下列说法中正确的是。

A.死锁是操作系统中的问题,数据库操作中不存在 B.在数据库操作中防止死锁的方法是禁止两个用户同时操作数据库C.当两个用户竞争相同资源时不会发生死锁 D.只有出现并发操作时,才有可能出现死锁答案:D7、对并发操作若不加以控制,可能会带来问题。

A.不安全B.死锁C.死机D.不一致答案:D8、并发操作会带来哪些数据不一致性。

A.丢失修改、不可重复读、脏读、死锁 B.不可重复读、脏读、死锁C.丢失修改、脏读、死锁 D.丢失修改、不可重复读、脏读答案:D二、填空题1、DBMS的基本工作单位是事务,它是用户定义的一组逻辑一致的程序序列;并发控制的主要方法是机制。

答案:封锁2、有两种基本类型的锁,它们是共享锁和排它锁。

答案:①共享锁②排它锁三、简答题1、叙述数据库中死锁产生的原因和解决死锁的方法。

答:死锁产生的原因:封锁可以引起死锁。

比如事务T1封锁了数据A,事务T2封锁了数据B。

T1又申请封锁数据B,但因B被T2封锁,所以T1只能等待。

病案信息学新版教材病案第十一章

病案信息学新版教材病案第十一章
病案信息学
$
吴韫宏
信息32班-专用课件
2019年南宁
$
第六章 疾病分类
$
$
本章节内容概要
★ 第一章 某些传染病和寄生虫病 ★ 第二章 肿瘤 ★ 第九章 循环系统疾病 ★ 第十五章妊娠、分娩和产褥期 ★ 第十六章起源于围生期的情况 ★ 第十八章症状、体征和临床与实验室异常所见,不可
归在他处者 ★ 第十九章损伤、中毒和外因的某些后果 ★ 第二十章疾病和死亡的外因
$
综合上述,新生儿腹泻有两种可能的编码: 新生儿非感染性腹泻 P78.3 新生儿某种病原体的感染性腹泻 A00-B99
$
双轴心分类
4、结核病与粟粒性结核的分类
(1)分类轴心 1)A15和A16类目的分类轴心为实验室对结核杆菌检查的证实
情况。 其他类目不强调实验室证实情况。 A15 呼吸道结核,经细菌学和组织学证实 A16 呼吸道结核,未经细菌学和组织学证实
$
(4)当HIV疾病发生之前已存在某种疾病时,这 个疾病不要当作HIV病的并发症来编码,而要按 一般疾病编码的方法进行,且这个疾病的编码要 作为附加编码。 例如:某病人在查出HIV阳性之前多年来都进行 肺结核的治疗。
此次住院除治疗肺结核外,还治疗由HIV病 引起的伯基特淋巴瘤,他的疾病编码应是B21.1 和A16.2。
$
(1)良性肿瘤的命名 细胞或组织名称+瘤
例如: 上皮细胞瘤、鳞状细胞瘤 ——(是以细胞名称+瘤命名的)。
平滑肌瘤、血管瘤 ——(是以组织名称+瘤命名的)。
$
(2)恶性肿瘤的命名 1)癌
恶性肿瘤如果发生在来源于内外胚层的组 织,命名就采用:细胞名称+癌。 例如:
鳞状细胞癌、腺癌、嫌色细胞癌。

数据库第11章并发控制PPT演示文稿

数据库第11章并发控制PPT演示文稿
假设A的初值为2,B的初值为2。
36
并发操作的调度(续)
– 对这两个事务的不同调度策略
• 串行执行 – 串行调度策略1 – 串行调度策略2
• 交错执行
– 不可串行化的调度 – 可串行化的调度
37
(a) 串行调度策略,正确的调度
T1
T2
读B=2 A B+1 写回A=3
读A=3 B A+1 写回B=4
– 时标方法 – 乐观方法
45
11 并发控制
11.1 并发控制概述 11.2 并发操作的调度 11.3 封锁 11.4 死锁和活锁 11.5 Oracle的并发控制
46
11.3 封锁
封锁就是事务T在对某个数据对象(例如表、 记录等)操作之前,先向系统发出请求,对其 加锁。加锁后事务T就对该数据对象有了一定 的控制,在事务T释放它的锁之前,其它的事 务不能更新此数据对象。
»在事务运行的过程中发生了某种故 障,事务不能继续执行
»系统将事务中对数据库的所有已完 成的更新操作全部撤消,滚回到事 务开始时的状态
13
事务(续)
事务的ACID特性:
原子性(Atomicity) 一致性(Consistency) 隔离性(Isolation) 持续性(Durability )
14
基本封锁类型
– 排它锁(eXclusive lock,简记为X锁) – 共享锁(Share lock,简记为S锁)
50
封锁类型(续)
排它锁 – 排它锁又称为写锁。 – 若事务T对数据对象A加上X锁,则只允许T
读取和修改A,其它任何事务都不能再对A 加任何类型的锁,直到T释放A上的锁。
51
封锁类型(续)
7
11.1 并发控制概述

并发控制

并发控制
并行访问,通过并发控制机制允许多个用户并 发地访问数据库。
并发控制
当多个用户并发地访问数据库时就会产生多个事 务同时存取同一数据的情况。
若对并发操作不加以控制就会造成错误地存取数 据,破坏数据库的一致性。
数据库的并发控制机制是衡量数据库管理系统性 能的重要技术标志。
7.5.1 DB并发操作带来的数据不一致问题
(4)死锁的检测与解除
有向等待图中的每个回路意味着死锁的存在; 如果无任何回路,则表示无死锁产生。
并发控制子系统周期性地(比如每隔0.5分钟) 检测事务的有向等待图,如果发现有向等待图 中存在回路,就表示系统中出现了死锁。
(4)死锁的检测与解除
2)有向等待图法 ①检测死锁 ②解除死锁 选择一个处理死锁代价最小的事务,将其撤消,
①一次加锁法 要求每个事务必须对所有要使用的数据项一次性
地全部加锁,否则就不能继续执行。 缺点:扩大了锁的范围,降低了系统的并发度。
(3)死锁的预防(OS)
②顺序加锁法 预先对数据项规定一个加锁顺序,所有事务都按
这个顺序进行加锁。 缺点:很难按规定的顺序进行加锁。
(4)死锁的检测与解除
1)超时法 如果一个事务的等待时间超过了规定的时限,就
7.5.5 并发调度的可串行性
通常把按某一执行次序安排的事务执行的步骤称 为调度(Schedule)。
多个事务的并发执行是正确的,当且仅当其结果 与按某一顺序串行地执行它们时的结果相同。 称这种调度称为可串行化(Serializable)调度。
可串行性(Serializability)是并发事务正确性的 判别准则。按照这个准则的规定,一个给定的 并发调度,当且仅当它可串行化时,才认为是 正确的调度。
(2)二级锁协议

操作系统的并发控制与调度算法

操作系统的并发控制与调度算法

操作系统的并发控制与调度算法操作系统是计算机系统的核心组成部分,它负责管理计算机系统中的硬件和软件资源。

在现代计算机系统中,要实现多任务处理和资源共享,就需要对并发控制和调度算法进行有效管理。

本文将重点探讨操作系统中的并发控制与调度算法,并介绍其原理和应用。

一、并发控制在操作系统中,多个进程或线程可以同时执行,这就是并发的基本特性。

然而,并发执行可能会导致资源竞争的问题,比如对共享数据的修改,如果没有合适的并发控制机制,就会导致数据不一致或错误的结果。

因此,并发控制是操作系统中非常重要的一项功能。

1. 锁机制锁机制是最常见的并发控制技术之一。

当多个进程或线程需要访问同一个共享资源时,可以使用锁来控制资源的访问权限。

常见的锁包括互斥锁、读写锁和条件变量等。

互斥锁用于串行化对共享资源的访问,一次只允许一个进程或线程访问资源;读写锁允许多个读者同时访问共享资源,但只允许一个写者独占访问;条件变量用于线程之间的通信和同步,当某个条件满足时,通知等待线程执行。

2. 信号量机制信号量机制是另一种常用的并发控制技术。

信号量是一个计数器,用于控制对资源的访问。

当一个进程或线程要访问资源时,会尝试将信号量减一,如果信号量为负,则表示资源正在被占用,进程或线程需要等待;当一个进程或线程释放资源后,会将信号量加一,唤醒等待的进程或线程。

二、调度算法在操作系统中,调度算法用于决定哪个进程或线程获得执行的机会。

调度算法的目标是提高系统的性能和吞吐量,同时保证公平性和响应性。

下面介绍几种常见的调度算法。

1. 先来先服务(FCFS)先来先服务算法是最简单的调度算法之一。

按照进程或线程的到达顺序为它们分配CPU的执行时间。

优点是简单易实现,但缺点是平均等待时间较长,容易产生“饥饿”现象。

2. 短作业优先(SJF)短作业优先算法根据进程或线程的执行时间来进行调度,执行时间短的优先获取CPU的执行时间。

这样可以减少平均等待时间,提高系统的性能和响应速度。

《数据库并发控制》课件

《数据库并发控制》课件
《数据库并发控制》ppt 课件
• 数据库并发控制概述 • 数据库锁机制 • 数据库事务隔离级别 • 多版本并发控制 • 数据库并发控制的优化 • 数据库并发控制的案例分析
01
数据库并发控制概述
并发控制的定义
并发控制
在数据库系统中,并发控制用于协调多个事务的 执行,确保数据的一致性和完整性。
一致性
索引优化的方法
选择合适的索引类型、合理规划索引列、定期维护和重建索引等。
SQL语句优化
总结词
优化SQL语句可以提高数据库查询性能,减少并发控制时的 资源争用。
详细描述
通过编写高效的SQL语句,可以减少数据库的负载,降低并发控 制时的竞争。常见的SQL语句优化技巧包括使用连接代替子查询
、减少全表扫描等。
SQL语句优化的方法
分析查询执行计划、使用数据库提供的性能监控工具、编 写简洁高效的SQL语句等。
数据库设计优化
总结词
良好的数据库设计可以提高数据存储和访问的效率,降低 并发控制时的冲突。
详细描述
数据库设计包括表结构设计、关系设计、存储过程和触发 器设计等。通过合理设计,可以减少数据冗余、提高数据 一致性,从而降低并发控制时的竞争。
02
数据库锁机制
锁的分类
共享锁(Shared Lock)
允许事务读取一个资源,阻止其他事务获取独占锁。
排他锁(Exclusive Lock)
允许事务修改或删除一个资源,阻止其他事务获取共享锁或排他锁。
更新锁(Update Lock)
用于防止死锁,允许事务在资源上获得排他锁之前先获得一个较弱的 锁。
案例二:电商系统并发控制优化
总结词
利用乐观锁和事务隔离级别

第十一章并发控制

第十一章并发控制

不可串行化的调度
T1
Slock B Y=B=2
T2
Slock A X=A=2
Unlock B Xlock A A=Y+1 写回A(=3)
Unlock A
Xlock B B=X+1 写回B(=3) Unlock B
Unlock A
不可串行化的调度
由于其执行结果与(a)、(b)的结果都不同,所
以是错误的调度。
T2
Slock A X=A=3 Unlock A Xlock B B=X+1 写回B(=4) Unlock B
串行调度策略,正确的调度
T1 T2
SlockA X=A=2 Unlock A Xlock B B=X+1 写回B(=3) Unlock B Slock B Y=B=3 Unlock B Xlock A A=Y+1 写回A(=4) Unlock A
不同级别的封锁协议: 1级封锁协议:对T要“修改”的R加X锁,直到T结 束
(从而避免丢失数据修改,保证事务可恢复) T对R的“读”操作,没作说明,所以可以不加 锁
1级封锁协议只解决“丢失修改”的问题,而另外 两种不能解决
T1 ① Xlock A 获得 ② 读A=16 ③A←A-1 写回A=15 Commit Unlock A ④
避免死锁问题:
两类方法
1. 预防死锁 2. 死锁的诊断与解除
预防死锁的方法:一次封锁法和顺序封锁法
一次封锁法:要求每个事务必须一次将所有要使用
的数据全部加锁,否则就不能继续执行
存在的问题:降低并发度
扩大封锁范围 将以后要用到的全部数据加锁,势必扩大了封锁的范 围,从而降低了系统的并发度

并发控制(完成)

并发控制(完成)

并发控制 ----两段锁协议
两段锁协议—— 是指所有事务必须分两个阶段对数 据项加锁和解锁: 1. 在对任何数据进行读、写操作之前,首先要 申请并获得对该数据的封锁。 2. 在释放一个封锁之后,事务不再申请和获得 任何其他封锁。
并发控制 ----两段锁协议
“两段”锁的含义: 事务分为两个阶段。 第一阶段——获得封锁,也称为扩展阶段。在这一阶段, 事务可以申请获得任何数据项上的任何类型的锁,但 是不能释放任何锁。
并发控制 ----两段锁协议
遵守两段锁协议的事务发生死锁 T1 T2
Slock B 读B=2 Slock A 读A=2
Xlock A 等待 等待
Xlock B 等待
并发控制 ---封锁的粒度
• • • • 封锁的对象的大小称为封锁粒度(Granularity)。 封锁的对象可以是逻辑单元,也可以是物理单元。 以关系数据库为例,封锁对象可以是: 这样一些逻辑单元: 这样一些物理单元: 属性值、 页(数据页或索引页)、 属性值的集合、 块等 元组、 关系、 索引项、 整个索引 整个数据库;
并发控制 ---封锁的粒度
• 封锁粒度与系统的并发度和并发控制的开销密切相关。 • 直观地看,封锁的粒度越大,数据库所能够封锁的数 据单元就越少,并发度就越小,系统开销也越小;反 之,封锁的粒度越小,并发度较高,但系统开销也就 越大。 • 如果在一个系统中同时支持多种封锁粒度供不同的事 务选择是比较理想的,这种封锁方法称为多粒度封锁 (multiple granularity locking)。
第二阶段——释放封锁,也称为收缩阶段。在这阶段, 事务可以释放任何数据项上的任何类型的琐,但是不 能再申请任何琐。
并发控制 ----两段锁协议

操作系统的并发控制

操作系统的并发控制

操作系统的并发控制操作系统是计算机系统中管理和控制计算机硬件与软件资源的核心程序。

在多任务操作系统中,多个进程同时运行,需要操作系统提供并发控制机制来确保进程间的正常协调和资源的合理分配。

本文将介绍操作系统的并发控制的概念、分类以及常见的并发控制机制。

一、概述并发是指多个进程同时执行的状态,是多任务操作系统中的基本特性。

并发控制是指对并发操作进行管理和协调的一种机制,目的是保证资源的正确使用和进程的正常运行。

二、分类根据并发控制机制的不同,可以将并发控制分为两大类,即互斥操作和同步操作。

1. 互斥操作互斥操作是指对能被多个进程访问的共享资源进行互斥访问,以防止并发操作导致数据不一致或冲突。

常见的互斥操作机制有互斥锁、信号量和读写锁等。

- 互斥锁:通过设置一个标志位来控制共享资源的访问,一次只允许一个进程对资源进行操作,其他进程需要等待当前进程释放锁才能继续执行。

- 信号量:通过一个计数器来控制对共享资源的访问,根据计数器的值来判断资源是否可用,通过对计数器的增减来实现进程间的同步和互斥。

- 读写锁:在读操作和写操作之间进行协调,允许多个进程同时进行读操作,但是只允许一个进程进行写操作。

2. 同步操作同步操作是指对进程的执行进行协调与同步,保证进程按照一定的顺序执行。

常见的同步操作机制有信号量、条件变量和屏障等。

- 条件变量:用于在进程间传递信息和进行同步操作,进程可以等待某个特定条件满足后再继续执行。

- 屏障:用于同步多个并发进程的执行,在所有进程到达屏障之前进行等待,待所有进程都到达后才能一起继续执行。

三、实现方式实现并发控制可以采用硬件支持和软件支持的方式。

1. 硬件支持硬件支持是指通过硬件设备来实现并发控制。

常见的硬件支持有自旋锁和多处理器系统。

- 自旋锁:使用忙等待的方式,即进程一直占用处理器不进行调度,直到获取到锁才能继续执行。

适用于锁竞争较小的情况。

- 多处理器系统:在多处理器系统中,每个处理器都可以独立执行不同的任务,从而提高系统的并发性能。

并发控制概念

并发控制概念

并发控制概念---------------------------------------------------------------------------------------事务执⾏⽅式:1. 事务串⾏执⾏2. 交叉并发⽅式3. 同时并发⽅式并发控制机制的任务:对并发操作进⾏正确调度;保证事务的隔离性;保证数据库的⼀致性;并发操作带来的数据不⼀致性:丢失修改,不可重复读,读“脏”数据。

并发控制就是要⽤正确的⽅式调度并发操作,使⼀个⽤户事务的执⾏不受其他事务的⼲扰,从⽽避免造成数据的不⼀致性。

-----------------------------------------------------------------------------------------并发控制的技术:封锁,时间戳,乐观控制法。

(商⽤DBMS⼀般采⽤封锁⽅法)什么是封锁?封锁就是事务T在对某个对象(例如表、记录等)操作之前,先向系统发出请求,对其加锁。

加锁后事务T对该数据对象有了⼀定的控制,在事务T释放它的锁之前,其他的事务不能更新此数据对象。

基本封锁类型:排它锁(X锁,写锁)共享锁(S锁,读锁)排它锁:若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。

这就保证了其他事务在T释放A上的锁之前不能再读取和修改A。

共享锁:若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,⽽不能加X锁,直到T释放A上的S锁。

这样保证其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。

-------------------------------------------------------------------------------------死锁和活锁活锁:打个⽐⽅,有⼀次我和⼀个朋友开车误闯单⾏道,前⾯有车过来,我们只能找个⾓落躲进去让他,⽆奈对⾯⼀直有车开过来的话我们就得⼀直等下去。

数据库第11章并发控制

数据库第11章并发控制

2021/4/6
兰彬制作
13
不可重复读的3种情况
3. 事务1按照一定的条件,从数据库中读取了某 些数据记录后,事务2插入了一些记录,当事 务1再次按相同条件读取数据时,发现多了一 些记录。
后两种不可重复读有时也称为幻影现象
2021/4/6
兰彬制作
14
3. 读“脏”数据
事务1修改某一数据,并将其写回磁盘上的数 据库中。

T2 读C=200
③ ROLLBACK C 恢复为100
2021/4/6
兰彬制作
16
11.2 封锁
什么是封锁
✓封锁就是:事务 T 在对某个数据对象(例如 表、记录等)操作之前,先向系统发出请求, 对其加锁;
✓加锁后事务 T 就对该数据对象有了一定的控 制,在事务 T 释放它的锁之前,其它的事务 不能更新此数据对象。
超时法的基本思想:
✓ 如果一个事务的等待时间超过了规定的时限,
就认为发生了死锁
优点: 实现简单 缺点:
✓ 有可能误判死锁
✓ 时限若设置得太长,死锁发生后不能及时
发现
2021/4/6
兰彬制作
42
检测死锁:事务等待图法
用事务等待图动态反映所有事务的等待情况:
✓事务等待图是一个有向图G=(T,U) ✓T为结点的集合,每个结点表示正运行的事务 ✓U为边的集合,每条边表示事务等待的情况
2021/4/6
兰彬制作
4
事务并发执行带来的问题
可能会存取和存储不正确的数据,破坏事务 的隔离性和数据库的一致性 DBMS必须提供并发控制机制 并发控制机制是衡量一个DBMS性能的重要 标志之一
2021/4/6
兰彬制作
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2021
3
❖ 事务并发执行带来的问题:
▪ 可能会存取和存储不正确的数据,破坏 事务的隔离性和数据库的一致性
▪ DBMS必须提供并发控制机制 ▪ 并发控制机制是衡量一个DBMS性能的重
要标志之一
2021
4
11.1 并发控制概述
并发控制机制的任务
对并发操作进行正确调度 保证事务的隔离性 保证数据库的一致性
第十一章 并发控制
✓ 并发控制概述 ✓ 封锁 ✓ 活锁和死锁 ✓ 并发调度的可串行性 ✓ 两段锁协议
2021
1
问题的产生
✓多用户数据库系统的存在 ✓允许多个用户同时使用的数据库系统
•飞机定票数据库系统 •银行数据库系统 •特点:在同一时刻并发运行的事务数可达数 百
2021
2
❖ 多事务执行方式:
(1)事务串行执行
数据不一致实例:飞机订票系统
①事务读TA=1 16

③ A←A-1 写回A=15

事务 T2
读A=16
T1的修改被T2覆盖了!
A←A-3
写回A=13
2021
5
并发操作带来的数据不一致性
–丢失修改(lost update) –不可重复读(non-repeatable read) –读“脏”数据(dirty read)
2021
16
2级封锁协议
1级封锁协议+事务T在读取数据R前必须先加S锁, 读完后即可释放S锁
2级封锁协议可以防止丢失修改和读“脏”数据。 在2级封锁协议中,由于读完数据后即可释放S锁,
所以它不能保证可重复读。
2021
17
不可重复读
T1
① Sclock A 获得 读A=50
Unlock A ② Sclock B
获得 读B=100
Unlock B ③ 求和=150
T2
Xlock B
等待 等待
获得Xlock B 读B=100 B←B*2 写回B=200 Commit Unlock B
2021
T1 (续)
④Sclock A
获得 读A=50
Unlock A
Sclock B 获得 读B=200
Unlock B 求和=250 (验算不对)
▪ 共享锁又称为读锁:若事务T对数据对象A加上S
锁,则其它事务只能再对A加S锁,而不能加X锁, 直到T释放A上的S锁
2021
12
11.3 封锁协议
在运用X锁和S锁对数据对象加锁时,需要约定一 些规则:封锁协议(Locking Protocol) 何时申请X锁或S锁 持锁时间、何时释放
不同的封锁协议,在不同的程度上为并发操作的 正确调度提供一定的保证
DBMS通常提供了多种类型的封锁。一个事务对某 个数据对象加锁后究竟拥有什么样的控制是由封 锁的类型决定的。
基本封锁类型
排它锁(eXclusive lock,简记为X锁) 共享锁(Share lock,简记为S锁)
2021
11
排它锁又称为写锁:若事务T对数据对象A加上X 锁,则只允许T读取和修改A,其它任何事务都不 能再对A加任何类型的锁,直到T释放A上的锁


T2
Xlock B 等待 等待 等待 等待 等待 等待 等待 等待 获得Xlock B 读B=100 B←B*2 写回B=200 Commit Unlock B 2021
不读“脏”数据
T1
T2
① Xlock C
读C= 100
常用的封锁协议:三级封锁协议
2021
13
1级封锁协议
事务T在修改数据R之前必须先对其加X锁,直到 事务结束才释放 正常结束(COMMIT) 非正常结束(ROLLBACK)
1级封锁协议可防止丢失修改
在1级封锁协议中,如果是读数据,不需要加锁 的,所以它不能保证可重复读和不读“脏”数据。
2021
1、事务2对其做了修改,当事务1再次读该数据时,得到 与前一次不同的值。
2、事务2删除了其中部分记录,当事务1再次读取数据时, 发现某些记录神密地消失了。
3、事务2插入了一些记录,当事务1再次按相同条件读取 数据时,发现多了一些记录。
后两种不可重复读有时也称为幻影现象
2021
8
3. 读“脏”数据
事务1修改某一数据,并将其写回磁盘,事务2读取 同一数据后,事务1由于某种原因被撤消,这时事 务1已修改过的数据恢复原值,事务2读到的数据就 与数据库中的数据不一致,是不正确的数据,又称 为“脏”数据。
2021
6
1. 丢失修改
丢失修改是指事务1与事务2从数据库中读入同一数 据并修改,事务2的提交结果破坏了事务1提交的结 果,导致事务1的修改被丢失。
2021
7
2. 不可重复读
不可重复读是指事务1读取数据后,事务2执行更新 操作,使事务1无法再现前一次读取结果。
➢ 三类不可重复读:
事务1读取某一数据后:
2021
9
11.2 封锁
一、什么是封锁
封锁就是事务T在对某个数据对象(例如表、 记录等)操作之前,先向系统发出请求,对 其加锁
加锁后事务T就对该数据对象有了一定的控制, 在事务T释放它的锁之前,其它的事务不能更 新此数据对象。
封锁是实现并发控制的一个非常重要的技术
2021
10
二、基本封锁类型
14
没有丢失修改
2021
15
读“脏”数据
T1
① Xlock A 获得
② 读A=16 A←A-1 写回A=15

④ Rollback Unlock A
T2
读A=15
不可重复读
T1
①读A=50 读B=100 求和=150

③读A=50 读B=200 求和=250 (验算不对)
T2
Xlock B 获得 读B=100 B←B*2 写回B=200 Commit Unlock B
每个时刻只有一个事务运行,Байду номын сангаас他事务必须等 到这个事务结束以后方能运行
不能充分利用系统资源,发挥数据库共享资源 的特点
(2)交叉并发方式(interleaved concurrency)
事务的并行执行是这些并行事务的并行操作轮流 交叉运行
是单处理机系统中的并发方式,能够减少处理机 的空闲时间,提高系统的效率
T2
18
3级封锁协议
1级封锁协议 + 事务T在读取数据R之前必须先 对其加S锁,直到事务结束才释放
3级封锁协议可防止丢失修改、读脏数据和不可 重复读。
2021
19
可重复读
T1 ① Slock A
读A=50 Slock B 读B=100 求和=150 ②
③ 读A=50 读B=100 求和=150 Commit Unlock A Unlock B
相关文档
最新文档