清华大学数据库access课件 第11章:并发控制..

合集下载

《并发控制》课件

《并发控制》课件
《并发控制》PPT课件
这个PPT课件将带你了解并发控制的基本概念、重要性以及各种策略和技术。 让我们一起探索并发控制的不同方面和未来发展方向。
什么是并发控制?
并发控制是指在多用户环境下,对并发访问数据库的各种操作进行协调和管 理的一种技术。它的目标是保证数据的一致性和隔离性。
并发控制的作用与意义
事务执行过程中数据库从一个一致状态转换到另 一个一致状态。
隔离性
事务之间相互隔离,各自独立运行,互不干扰。
持久性
事务一旦提交,对数据库的修改就是永久性的。
事务的提交与撤销
1 提交事务
将事务的修改结果持久化到数据库中,使其对其他事务可见。
2 撤销事务
撤销事务的修改操作,将数据库恢复到事务开始之前的状态。
日志文件的作用与种类
1 作用
记录数据库的操作和修改过程,用于数据库 的恢复和重做操作。
2 种类
包括事务日志、撤销日志和重做日志等。
数据库恢复的两种常用方法
基于备份
使用数据库备份文件进行恢复,可以恢复整个数据库的一致性状态。
基于日志
根据日志文件的记录,对数据库进行恢复和重做操作,使其回到一致性状态。
1 数据一致性保证
通过并发控制,可以避免数据被多个并发操作同时修改而导致不一致的情况发生。
2 并发性能优化
有效的并发控制策略可以提高数据库系统的并发处理性能,降低响应时间。
3 资源利用率提高
合理的并发控制可以充分利用系统资源,提高系统利用率。
并发控制策略的分类
乐观并发控制
基于假设操作之间的冲突很少发生,采用乐观锁和版本号等机制来解决冲突。
2 已提交读
一个事务中的修改只有在提交后才能被其他 事务读取,避免了脏读的问题。

(完整版)第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在数据库中为什么要并发控制?答:数据库是共享资源,通常有许多个事务同时在运行。

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

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

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

数据库并发控制-PPT精选文档

数据库并发控制-PPT精选文档

死锁的诊断
方法一.等待图法 数据库周期性地生成事务等待关系有向图, 若图中存在有向回路,则表明产生死锁,如:
方法二.超时法
• 若一个事务的等待时间超过了规定的时限,则系统认为 产生了死锁
• 缺点: 规定时限设置过短,则容易误判; 设置过长,则不能及时处理死锁。
破除死锁方法
某些事务必须回滚以破除死锁,一般选择回滚 带来代价最小的事务,释放该事务所持有的全 部锁,并撤销其对数据的修改操作。
规则
• 事务T在执行其任何read_item(X)或write_item(X)操作之 前,必须先发出一个lock_item(X)操作
• 事务T中所有read_item(X)和write_item(X)操作执行完之 后,都必须发出一个unlock_item(X)操作
共享/排他(读/写)锁
• Read_lock(X) • Write_lock(X)
T1
read_item(X); X:=X-N;
Write_item(X); Read_item(Y);
Y:=Y-N; Write_item(Y)
T2
Read_item(X); X:=X+M;
Write_item(X)
事务的特性
•原子性 •一致性 •隔离性 •持久性
事务状态和附加操作
• BEGIN_TRANSACTION • READ或WRITE • END_TRANSACTION • COMMIT_TRANSACTION • ROLLBACK(ABORT)
并发控制的必要性
• 更新丢失 • 暂时更新(脏读) • 错误求和 • 不可重复读
项X的值是错误的, 因为T1对它的更新 丢失了
事务T1因故障而必 须将X值

ch11 数据库管理与安全 Access数据库应用基础教程(第三版) 教学课件

ch11 数据库管理与安全 Access数据库应用基础教程(第三版) 教学课件

读取数据 更新数据 插入数据 删除数据
查看表和查询中的数据 查看和修改表和查询中的数据,但并不向其中插入数据或删除其中的数据 查看表和查询中的数据,并向其中插入数据,但不修改或删除其中的数据 查看和删除表和查询中的数据,但不修改其中的数据或向其中插入数据
11.2.2 新建Microsoft Access工作组信息文件
11.2.4 通过向导建立用户组安全机制
对大型数据库设置用户级安全机制非常复杂,使用“用户级 安全机制向导”可以简化这一操作过程。“用户级安全机制向 导”可以快速完成Access数据库安全机制设置。此外,通过实 施“用户级安全机制向导”的通用安全方案,用户很少需要使 用“工具”|“安全”命令,甚至可以不用。
Access数据库中的权限类型
新建Microsoft Access工作组信息文件
Access的账号管理
通过向导建立用户组安全机制
修改和删除工作组信息
11.2.1 Access数据库中的权限类型
在用户级安全机制中,系统为不同级别的用户设
置了不同的权限。用户的任何操作将被限制在其所具
有的权限中。如表11-1所示是在Access数据库中可以为
Microsoft Access用户级安全机制类似于在服务器或主机系 统上看到的用户级安全机制。使用密码和权限,可以允许或限 制个人、组(由个人组成)对数据库中对象的访问。安全账户定义 了哪些用户和哪些组(由用户组成)可以访问数据库中的对象。这 一信息称为工作组,存储在工作组信息文件中。
使用用户级安全机制主要有以下两个原因:
11.1.1 数据库的压缩和恢复
数据库作为一个容器,管理着其内部的所有对象以及VBA程序。为了 确保数据库的正常运行,有必要对数据库进行定期的压缩和恢复。

数据库第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.3.1 封锁类型
● 基本的封锁类型有两种:排他锁和共享锁。 ● 排他锁(简记为X锁)又称为写锁。如果事务T对数据对象R加上X锁,则
只允许事务T读取和修改数据对象R,其他任何事务都不能再对数据对象R 加任何类型的锁,直到事务T释放数据对象R上的锁。这样就保证了其他事 务在事务T释放数据对象R上的锁之前,不能再读取和修改数据对象R。
7.4.2 死锁
1.死锁的预防 死锁预防机制的思想是:避免并发事务互相等待其他事务释放封锁
的情况出现,保证数据库系统永不进入死锁状态。预防死锁主要有 一次封锁法和顺序加锁法两种。 (1)一次封锁法 一次封锁法要求每个事务开始执行之前,一次性将所有要用的数据 对象全部加锁,否则事务就不能继续执行。
7.4.2 死锁
2.死锁的检测与解除 在数据库系统中,诊断死锁一般使用超时法和事务等待图法。 (1)超时法 当一个事务等待加锁的时间超过了规定的时限,就被认为发生了死
锁。超时法实现简单,但是设置判断死锁的时限是非常困难的,如 果设置的时限太长,那么发生死锁以后不能及时发现;如果设置的 时限太短,那么由于其他原因导致的事务等待超时也会被误认为发 生了死锁。
● READ(B)
● B=B+5000
● IF(B>30000)

ROLLBACK
● ELSE

WRITE(B)
● COMMIT
● END TRANSACTION
/*账号A款项不足*/ /*账号B款项超过30000元*/
7.1.2 事务的特性
1.原子性 ● 事务是数据库的逻辑工作单位,是不可分割的工作单元。事务中包含的所
7.3.2 封锁协议
2.二级封锁协议 • 二级封锁协议是在一级封锁协议的基础上,再加上事务T在读取

《数据库并发控制》课件

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

数据库技术及应用 第11章 并发控制(选讲部分)

数据库技术及应用 第11章 并发控制(选讲部分)
事务2的封锁序列:
Slock A ... Unlock A ... Slock B ... Xlock C ... Unlock C ... Unlock B;
事务1遵守两段锁协议,而事务2不遵守两段协议。
39
数据库技术及应用
两段锁协议(续)
并行执行的所有事务均遵守两段锁协议,则对这 些事务的所有并行调度策略都是可串行化的。
并发控制(续)
(3) 同时并发方式(simultaneous concurrency)
多处理机系统中,每个处理机可以运行一个事 务,多个处理机可以同时运行多个事务,实现 多个事务真正的并行运行
最理想的并发方式,但受制于硬件环境 更复杂的并发方式机制
5
数据库技术及应用
事务并发执行带来的问题
从理论上讲,在某一事务执行时禁止其他事务 执行的调度策略一定是可串行化的调度,这也 是最简单的调度策略,但这种方法实际上是不 可行的,因为它使用户不能充分共享数据库资 源。
34
数据库技术及应用
如何保证并发操作的调度是正确的(续) 保证并发操作调度正确性的方法
封锁方法:两段锁(Two-Phase Locking,简称 2PL)协议
9
数据库技术及应用
1. 丢失修改
丢失修改是指事务1与事务2从数据库中读 入同一数据并修改 事务2的提交结果破坏了事务1提交的结果, 导致事务1的修改被丢失。
10
数据库技术及应用
2. 不可重复读
不可重复读是指事务1读取 数据后,事务2执行更新操 作,使事务1无法再现前一 次读取结果。
T1 ① 读A=50
T2
Slock A 读A=2 X=A Unlock A
Xlock B 等待 Xlock B B=X+1 写回B=3

数据库第11章并发控制ppt课件

数据库第11章并发控制ppt课件

T2
Xlock A 等待 等待


2019/12/27
获得 Xlock A 读A=15
A←A-1,写回A=14
兰彬C制o作mmit,Unlock A
23
一级封锁协议:读“脏”数据
T1 ① Xlock A
获得 ② 读A=16
A←A-1 写回A=15 ③
T2 读A=15
④ Rollback
Unlock A
共享锁 — 读锁,S锁
若事务 T 对数据对象A 加上 S 锁,则其它事
务只能再对A 加 S 锁,而不能加 X 锁,直到
T 释放 A 上的 S 锁。
2019/12/27
兰彬制作
19
封锁的相容矩阵
T2 X

-
T1
X
N
N
Y
S
N
Y
Y
-
Y
Y
Y
Y=Yes,相容的请求
N=No,不相容的请求
2019/12/27
兰彬制作
20
11.3 封锁协议
在运用X锁和S锁对数据对象加锁时,需要约定 一些规则:封锁协议(Locking Protocol)
何时申请X锁或S锁 持锁时间 何时释放X锁或S锁
常用的封锁协议:三级封锁协议
2019/12/27
兰彬制作
21
1. 一级封锁协议
事务T 在修改数据R之前必须先对其加X锁,直 到该事务结束才释放
标志之一
2019/12/27
兰彬制作
5
11.1 并发控制概述
并发控制机制的任务
对多个事务的并发操作进行正确调度 保证事务的隔离性 保证数据库的一致性

数据库原理及应用 第11章-并发控制(2学时)

数据库原理及应用 第11章-并发控制(2学时)
丢失修改1级封锁协议x锁事务结束不可重复读读脏数据s锁操作结束2级封锁协议s锁事务结束3级封锁协议一致性保证操作结束释放事务结束释放操作结束释放事务结束释放不丢失修改不读脏数据封锁协议四活锁和死锁五两段锁协议六封锁的粒度等待等待等待等待等待两个或多个事务封锁数据对象后又请求加锁对方的封锁对象从而出现死等待的现象
保证并发调度的正确性
三级封锁协议
保证数据一致性
遵守第三级封锁协议必然遵守两段协议
一、 概述 二、 封锁
三、 封锁协议
四、 活锁和死锁
五 、 两段锁协议
六 、 封锁的粒度
1. 封锁粒度 2. 多粒度封锁 3. 意向锁
1. 封锁粒度
(1)什么是封锁粒度
封锁的对象:逻辑单元,物理单元
当 几个事务串行执行的结果与并行执行的正确结果
一致时,把这种用串行方式代替并行方式的策略称为
可串行化(Serializable)的调度。
可串行性是并行事务正确性的唯一准则
如何保证?
从理论上讲,可串行化调度是最简单的调度策略, 但用户不能充分共享数据库资源。
保证方法:两段锁协议
两段锁协议
① 对数据读、写前,首先获得对该数据的封锁 ② 释放封锁后,不再获得任何封锁 “两段”锁的含义 第一阶段:获得封锁,也称扩展阶段 第二阶段:释放封锁,也称收缩阶段
逻辑单元: 属性值集合、元组、关系、索引项、数据库 物理单元:页(数据页或索引页)、物理记录等
封锁对象可大可小
封锁对象的大小称为封锁的粒度
一个系统同时支持多种封锁粒度
(2)选择封锁粒度的原则
封锁的粒度越
系统被封锁的对象
大 小
少 多
封锁粒度与并 发度、系统开 销成反比

课件:第十一章 并发控制

课件:第十一章  并发控制
R2上的锁 • 接着T2又申请封锁R1,因T1已封锁了R1,T2也只能等待T1
释放R1上的锁 • 这样T1在等待T2,而T2又在等待T1,T1和T2两个事务永远
不能结束,形成死锁
死锁(续)
T1 lock R1
• •
Lock R2. 等待 等待 等待 等待
T2 • Lock R2 • • • Lock R1 等待 等待

死锁
解决死锁的方法
两类方法
1. 预防死锁 2. 死锁的诊断与解除
1. 死锁的预防
• 产生死锁的原因是两个或多个事务都已封锁了一些数据对 象,然后又都请求对已为其他事务封锁的数据对象加锁, 从而出现死等待。
• 预防死锁的发生就是要破坏产生死锁的条件
死锁的预防(续)
预防死锁的方法 • 一次封锁法 • 顺序封锁法
例如:
T1
T2
① R(A)=50
R(B)=100 求和=150 ②
R(B)=100
B←B*2
③ R(A)=50
(B)=200
R(B)=200 和=250
(验算不对)
不可重复读
T1读取B=100进行运算 T2读取同一数据B,对其进行
修改后将B=200写回数据库。 T1为了对读取值校对重读B,
B已为200,与第一次读取值 不一致
• 并发控制就是要用正确的方式调度并发操 作,使一个用户事务的执行不受其他事务 的干扰,从而避免造成数据的不一致性
并发控制概述(续)
• 并发控制的主要技术
– 有封锁(Locking) – 时间戳(Timestamp) – 乐观控制法
• 商用的DBMS一般都采用封锁方法
第十一章 并发控制
11.1 并发控制概述 11.2 封锁 11.3 活锁和死锁 11.4 并发调度的可串行性 11.5 两段锁协议 11.6 封锁的粒度 11.7 小结
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

4
§11.1封锁协议
基本的封锁协议
加锁:
• 要访问一个数据项,事务T必须首先申请给该数 据项加锁:
如果该数据项已经被另一事务加上了不相容类型的 锁,则在所有不相容类型的锁被释放之前,并发控 制管理器不会授予事务T申请的锁; 因此T必须等待,直到所有不相容类型的锁被释放。
解锁:
• 只要事务T还在访问某数据项,它就必须拥有该 数据项上的锁; • 除此之外,事务T可以随时释放先前它加在某个 数据项上的锁。
• 增长阶段:
事务可以获得锁, 但不能释放锁。
• 缩减阶段:
事务可以释放锁, 但不能获得锁。
对于一个事务而言:
2018/10/3 11
§11.1封锁协议
两阶段封锁协议
饿死问题:
• DBMS中并发控制管理器授权加锁 的两个条件。
解锁问题:
• 两阶段封锁协议指出了事务释放 锁的时机,使得解锁指令不必非 得出现在事务的末尾,增加了事 务之间的并发度。
2018/10/3 7
§11.1封锁协议
基本封锁协议的问题
从前面的例子可以看出,即使在调度中采用 了基本的封锁协议,也还有可能导致数据库 不一致。因此基本的封锁协议也有缺陷:
• 解锁问题:
在事务中过早地释放数据项上的锁,有可能导致数 据库的不一致。
• 死锁问题:
所有的事务因为持有锁和申请锁而导致大家都处于 等待状态,无法继续执行;
2018/10/3
当事务Ti申请对数据项Q加M型锁 时,授权加锁的条件是:
①不存在其他事务在数据项Q上持有 与M型锁冲突的锁; ②不存在其他事务等待对数据项Q加 10 锁且先于Ti申请加锁。
§11.1封锁协议
两阶段封锁协议
为了解决事务的解锁 问题,该协议要求每 个事务分两个阶段提 出加锁和解锁申请:
死锁问题:
• 在调度中可能还会有死锁发生, 真正的原因是什么呢?
2018/10/3 12
§11.1封锁协议
封锁点
对任何一个事务而言,在调度中获得其最后 一个锁的时刻,称为该事务的封锁点。
思考题
调度中多个事务可根据它们的封锁点进行排 序,该顺序就是事务的一个可串行化次序?
2018/10/3 13
强两阶段封锁协议:
• 该协议要求事务提交之前不得释放任何锁,它旨 在让冲突的事务尽可能地串行执行; • 这样调度中的事务可以按其提交的顺序串行化; • 事务提交的顺序与前面讲的封锁点顺序一致吗?
实现这个要求的最常用的方法就是:
• 只有当一个事务目前在一个数据项上持有 某种锁时,DBMS才允许该事务访问这个数 据项; • 否则,就„„
2018/10/3 2
§11.1封锁协议
给数据项加锁的类型
共享锁:
• 如果事务T获得了数据项Q上的共享锁(记为S), 则T可读Q但不能写Q。
排他锁:
令A与B代表任意类型的锁,已知如下条件:
• 事务Ti正请求对数据项Q加A类型锁; • 而另一个事务Tj当前在数据项Q上持有B类型锁。
结论:
• 尽管数据项Q上已加有B类型锁,但如果事务Ti可 以立即获得数据项Q上的A类型锁,则称A类型锁 与B类型锁相容。
锁相容矩阵
2018/10/3
只有其值为TRUE的两类锁才相容。
• 饿死问题:
一个事务总是不能在某个数据项上加上锁,因此该 事务也就永远不能取得进展。
2018/10/3 8
§11.1封锁协议
解锁与死锁问题
如果对数据项进行读写之后 立即解锁,容易造成数据库 的不一致,那么是否把解锁 的时机往后推到事务的末尾 就万事大吉了呢? 解锁的时机不仅影响事务的 并发度,同时还有可能造成 调度的死锁!
■封锁协议 ■有效性检查协议 Fra bibliotek树形协议 ■多粒度机制 ■时间戳排序协议 ■多版本机制
2018/10/3
■死锁处理 ■插入与删除 ■本章总结
1
§11.1封锁协议
加锁的理由
保证调度可串行化的方法之一是对数据 项的访问以互斥的方式进行:
• 当一个事务访问某个数据项时,其他任何 事务都不能修改该数据项。
§11.1封锁协议
加强的两阶段封 锁协议
问题的提出:
• 在两阶段封锁 协议下,还有 一个问题就是 在发生故障的 情况下调度中 事务的级联回 滚可能发生。
举例:
• 如右图所示
2018/10/3 14
§11.1封锁协议
加强的两阶段封锁协议
严格两阶段封锁协议:
• 除了要求封锁是两阶段之外,还要求事务持有的 所有排他锁必须在事务提交之后方可释放; • 这个要求保证未提交事务所写的任何数据在该事 务提交之前均以排他方式加锁,防止其他事务读 取这些数据。
• 如果事务T获得了数据项Q上的排他锁(记为X), 则T既可读Q又可写Q。
根据操作要求事务给数据项申请适当的锁
该请求是发送给DBMS的并发控制管理器的; 只有在并发控制管理器授予事务所需要的锁 之后,事务才能继续其操作。
2018/10/3 3
§11.1封锁协议
一个数据项上到底能加有多少个锁? 锁和锁之间的关系是什么?
2018/10/3 5
§11.1封锁协议
加锁与解锁的表达
假设Q代表数据项 加锁指令:
• lock-S(Q):申请Q 上的共享锁; • lock-X(Q):申请Q 上的排他锁。
解锁指令:
• unlock(Q):释放Q 上的所有锁。
2018/10/3 6
§11.1封锁协议
带锁的调度
事务T1申请锁 并发控制管理 器检查是否可 以授予锁? 如果可以, grant-X(A,T1) 指令将授予锁 如果不可以, 则事务T1就必须 等待!
• 死锁比造成数据库不一致要 好,因为死锁可以通过DBMS 回滚某事务加以解决;而„
2018/10/3 9
§11.1封锁协议
饿死问题
锁的授予:
•事务申请对某 数据项加某种 类型的锁; •没有其他事务 在该数据项上 持有与该事务 所申请的锁不 相容的锁; •此时,并发控 制管理器才可 以授予锁。
第11章 并发控制
讲课内容:
事务最基本的特性之一就是隔离性。当DBMS中有 多个事务并发执行时,事务的隔离性就不一定能 保持。DBMS必须对并发事务之间的相互作用加以 控制,这种控制是通过并发控制机制来实现的。 所谓的并发控制机制本质上就是并发控制协议, 这些协议是一组规则,用来决定冲突的事务是回 滚重启还是等待执行。本章要讨论的所有协议都 能保证调度是可串行化的!
相关文档
最新文档