并发控制课后答案-简述并发控制

合集下载

软件开发中的并发控制问题

软件开发中的并发控制问题

软件开发中的并发控制问题在软件开发中,不可避免地会遇到并发控制问题。

并发控制是指多个程序同时访问共享资源时可能发生的冲突情况,如数据竞争、死锁等。

这些问题会对系统的正确性和性能造成负面影响,因此在软件开发中需要仔细处理并发控制问题。

1. 并发控制的基本概念在软件开发中,同时访问共享资源的程序称为并发程序。

共享资源可以是变量、对象、文件、数据库等。

为了保证并发程序的正确性,必须采取一些措施防止并发访问导致数据不一致或者程序出现死锁等问题。

并发控制涉及以下几个概念:1. 锁:是一种同步机制,用于控制对共享资源的访问。

锁可以分为共享锁和排他锁。

共享锁允许多个进程同时访问资源,但是不能进行写操作。

排他锁是一种互斥锁,只允许一个进程访问资源。

2. 事务:是一组操作的集合,作为一个单一的逻辑工作单元进行处理。

事务具有ACID特性(原子性、一致性、隔离性、持久性)。

事务的目的是确保一组操作被连续地执行,或者在发生错误时回滚到原始状态。

3. 死锁:是指两个或多个进程互相等待而无法继续执行的情况。

死锁是并发控制的一个严重问题,可以导致系统崩溃或者长时间停滞。

2. 并发控制方法在软件开发中,有多种方法可以处理并发控制问题。

以下是其中的一些方法:1. 锁机制:使用锁来保护共享资源免受竞争和冲突。

锁分为乐观锁和悲观锁。

乐观锁通过版本号或时间戳等方式避免资源的竞争和冲突,而不是直接阻塞访问。

悲观锁通过直接阻塞其他访问来保证资源的可用性和正确性。

悲观锁包括共享锁、排他锁等。

2. 事务机制:事务机制可以确保一组操作被连续地执行或者在发生错误时回滚到原始状态。

事务机制通常在数据库管理系统等领域中使用,可以避免数据不一致和死锁等问题。

3. 信号量机制:信号量是一种计数器,用于控制同时访问共享资源的数量。

信号量可以使用P、V操作来进行锁定和解锁。

4. 读写锁机制:读写锁是一种特殊的锁机制,旨在优化读操作和写操作的并发。

读操作可以共享锁,多个线程同时持有读锁进行读操作。

并发控制

并发控制

第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只能等待。

简述数据库的并发控制概念以及并发控制的主要方法

简述数据库的并发控制概念以及并发控制的主要方法

简述数据库的并发控制概念以及并发控制的主要方法数据库的并发控制是指在多个用户同时访问数据库的情况下,确保数据的一致性和完整性。

并发控制的主要目标是在保证数据库事务的正确执行的同时,提高数据库系统的并发性能。

并发控制的概念:并发控制是指对同一资源的访问是受到一定的控制,以确保数据库的一致性和完整性。

在数据库系统中,多个用户可以同时执行事务,而这些事务可能会对数据库中的数据进行读取和修改操作。

并发控制机制必须保证多个事务对数据库的并发执行不会导致数据的不一致性和冲突。

并发控制的主要方法:1.锁定机制:锁定是指在事务执行期间,对被访问的数据进行加锁,以防止其他事务对该数据进行修改。

锁定机制可以分为共享锁(用于读操作)和排他锁(用于写操作)。

当事务需要对一些数据项进行读取或修改时,需要先获取相应的锁。

如果资源已经被其他事务锁定,则当前事务需要等待资源释放后才能继续执行。

2.时间戳机制:时间戳是给每个事务分配的一个唯一的标识,用来标记事务的开始时间或提交时间。

事务执行期间,每个事务所访问的数据都会被标记上时间戳,以记录事务对数据的读取和修改操作。

在并发执行时,系统可以根据时间戳的顺序来判断事务的串行执行顺序,从而避免冲突和不一致性。

3.多版本并发控制(MVCC):MVCC是在每个数据项上维护多个版本的数据,每个事务执行时,可以根据事务的时间戳或版本号来读取对应的数据版本。

MVCC对读取操作不加锁,只对写操作加锁,从而提高了并发性能。

当一个事务需要修改一些数据时,会生成新的数据版本,并将新版本的指针指向旧版本,这样其他事务可以继续读取旧版本的数据,不会被阻塞。

4.乐观并发控制:乐观并发控制假设在事务提交时不会发生冲突,因此不对数据进行加锁。

当事务提交时,系统会检查该事务对数据修改时是否发生冲突。

如果没有冲突,该事务的修改操作会被接受,否则会被回滚,重新执行。

除了以上主要的并发控制方法,还有一些辅助的并发控制技术,如死锁检测和恢复、并发控制粒度的调整、多级锁技术等。

数据库基础与应用第二版课后答案王珊李盛恩编著

数据库基础与应用第二版课后答案王珊李盛恩编著

数据库基础与应用1.数据(DB):数据实际上是描述事物的符号纪录。

2.数据库: 数据库实际上是长期存储在计算机内的有组织的、可共享的数据集合。

3.从文件系统的视角上看去,文件是无结构的,文件只是一个字节流,因此,我们经常把文件叫做流式文件,实际上文件的数据是有结构的,数据的结构需要程序员通过编写程序来建立和维护。

4.数据库应用可以分为两大类:联机事务处理(OLTP),联机分析处理(OLAP).联机事务处理解决了组织结构业务自动化问题,而联机分析处理帮助管理层更好的分析组织结构的运站情况。

5. 数据库管理系统(DBMS):数据库管理系统是一类重要的软件,由一组程序组成。

其主要功能是完成对数据库的定义、数据操作。

提供给用户一个简明的接口,实现事务处理等。

6.数据库管理系统的基本功能:数据的定义功能数据操作功能数据库的运行和管理数据库的建立和维护功能7.数据库管理系统由两大部分组成:查询处理器存储管理器8.层次结构:应用层语言翻译层数据存取层数据存储层操作系统数据库9. 数据库系统:数据库系统是基于数据库的计算机应用的系统,有四部分组成数据库数据管理系统应用系统用户。

10. 数据库管理员的职责:(1)决定数据库中要存储的数据及数据结构(2)决定数据库的存储结构和存取策略(3)保证数据的安全性和完整性(4)监控数据库的使用和运行(5)数据库的改进和重组重构11.数据模型的三要素:数据结构数据操作完整性约束12. 数据结构是所研究的对象的类型的集合,这些对象是数据库的组成成分,他们包含两类:一类是与数据之间联系有关的对象。

一类是与数据之间联系有关的对象。

13. 数据操作:数据库主要有检索和更新(插入、删除、修改)两大类操作。

14.在关系模型中任何关系都要满足实体完整性和参照完整性。

15.三种数据模型:概念模型逻辑模型物理模型逻辑模型中有:层次模型网状模型关系模型面向对象模型对象关系模型其中层次模型和网状模型统称为非关系模型。

并发控制的主要方法是

并发控制的主要方法是

并发控制的主要方法是并发控制是指多个用户同时对数据库进行操作时的一种机制,它的目的是保证数据库在并发操作过程中能够保持数据的一致性、完整性和正确性。

在并发控制中,有一些主要的方法和技术被广泛应用于数据库系统。

1. 锁定机制锁定机制是最常见和基本的并发控制方法之一,它通过在并发操作过程中对数据资源加锁来保证数据的一致性和正确性。

在数据库中,可以使用不同级别的锁(如共享锁和排他锁)对数据进行加锁,以控制并发操作对数据的访问。

锁定机制可以有效地避免数据的丢失和不一致,但也可能引起死锁和性能问题。

2. 事务处理事务处理是一种常用的并发控制方法,它将多个数据库操作组合成一个逻辑单元,要么全部执行成功,要么全部回滚,以确保数据的一致性。

通过对事务的隔离和原子性操作的要求,可以有效地控制并发操作对数据的影响。

在事务处理中,可以使用锁定机制、时间戳机制和多版本并发控制等技术来实现并发控制。

3. 多版本并发控制(MVCC)多版本并发控制是一种先进的并发控制方法,它通过为每个事务创建一个独立的读取版本,使得多个事务可以同时读取和修改数据,而不会相互干扰。

多版本并发控制通过为每个数据项的每个版本分配一个唯一的时间戳来实现,它可以提高并发访问性能和资源利用率,并减少死锁和阻塞问题的发生。

4. 并发控制协议并发控制协议是一种用于控制并发操作的协议,它定义了多个事务之间的执行顺序和互斥关系。

常见的并发控制协议有两阶段锁定协议(2PL)、时间戳排序协议(TSO)、验证协议和快照隔离协议等。

并发控制协议可以根据实际应用场景和需求选择合适的协议,以确保数据的一致性和正确性。

5. 乐观并发控制乐观并发控制是一种无锁的并发控制方法,它基于假设多个事务之间的冲突很少发生,事务可以同时执行而不发生冲突。

通过在事务执行过程中记录每个数据项的读取和写入操作,在提交时对事务进行冲突检测和冲突解决,可以有效地保证数据的一致性和正确性。

乐观并发控制适用于并发读多写少的场景,并具有较好的性能和可扩展性。

数据库原理与技术课后答案

数据库原理与技术课后答案

数据库原理与技术课后答案1. 简述数据库管理系统(DBMS)的作用和优点。

数据库管理系统是一种软件工具,用于管理和控制数据库的创建、维护、访问和使用等各个方面。

其主要作用如下:- 数据组织:DBMS通过定义数据结构和类型,实现数据的有序组织和存储,提高数据的组织性和结构性。

- 数据共享:DBMS可以为多个用户提供并发访问数据库的能力,实现数据共享和协同工作。

- 数据安全:DBMS提供了权限管理、数据备份和恢复等功能,保护数据库的安全性和一致性。

- 数据一致性:DBMS能够确保数据的一致性,维护数据库中各个数据之间的联系和完整性。

- 数据查询和处理:DBMS提供了灵活的查询语言和数据处理功能,方便用户对数据库进行查询、分析和操作。

DBMS的优点包括:- 数据共享和协作:多个用户可以同时访问和使用数据库,提高了工作效率和资源利用率。

- 数据一致性和完整性:DBMS确保数据库中的数据一致性和完整性,避免了数据冗余和错误。

- 数据安全和可靠性:DBMS提供了权限管理、数据备份和恢复等功能,保护数据库的安全和可靠性。

- 数据的易管理性和可维护性:DBMS提供了管理和维护数据库的工具和功能,简化了数据管理和维护的工作。

- 数据的高效访问和处理:DBMS提供了高效的数据访问和处理能力,提高了数据的查询和处理效率。

2. 简述关系型数据库和非关系型数据库的特点和应用场景。

关系型数据库特点:- 数据存储:关系型数据库使用表格形式存储数据,表格由行和列组成,每行表示一个记录,每列表示一个字段。

- 结构化数据:关系型数据库要求数据先定义表结构,再进行数据录入,确保数据的一致性和完整性。

- 支持SQL查询:关系型数据库使用结构化查询语言(SQL)进行数据查询和操作,具有较高的查询灵活性和表达能力。

- ACID特性:关系型数据库支持ACID(原子性、一致性、隔离性和持久性)特性,保证数据的一致性和可靠性。

关系型数据库应用场景:- 需要严格的数据一致性和完整性的应用,如金融系统、电子商务系统等。

并发控制的方法

并发控制的方法

并发控制的方法
并发控制是指在多个用户或进程同时访问共享资源时,保证数据一致性和完整性的一种技术。

下面介绍几种常见的并发控制方法。

1. 乐观并发控制
乐观并发控制是指在多个用户或进程同时访问共享资源时,先不加锁,而是在提交操作时检查是否有冲突。

如果有冲突,则回滚事务,重新尝试。

这种方法适用于并发冲突较少的场景,能够提高并发性能。

2. 悲观并发控制
悲观并发控制是指在多个用户或进程同时访问共享资源时,先加锁,保证每个用户或进程的操作互不干扰。

这种方法适用于并发冲突较多的场景,能够保证数据的一致性和完整性。

3. 两阶段锁
两阶段锁是指在执行事务时,先获取所有需要的锁,然后执行操作,最后释放所有锁。

这种方法能够保证数据的一致性和完整性,但是会降低并发性能。

4. 时间戳并发控制
时间戳并发控制是指在每个事务开始时,给事务赋予一个时间戳,每个数据项也有一个时间戳。

在执行操作时,比较事务时间戳和数据项时间戳,如果事务时间戳早于数据项时间戳,则执行操作,否则回滚事务。

这种方法能够保证数据的一致性和完整性,但是会增加系统开销。

5. 多版本并发控制
多版本并发控制是指在每个数据项中存储多个版本,每个版本有一个时间戳。

在执行操作时,选择最新的版本进行操作。

这种方法能够提高并发性能,但是会增加系统开销。

以上是几种常见的并发控制方法,不同的方法适用于不同的场景,需要根据具体情况选择合适的方法。

并发控制

并发控制
并行访问,通过并发控制机制允许多个用户并 发地访问数据库。
并发控制
当多个用户并发地访问数据库时就会产生多个事 务同时存取同一数据的情况。
若对并发操作不加以控制就会造成错误地存取数 据,破坏数据库的一致性。
数据库的并发控制机制是衡量数据库管理系统性 能的重要技术标志。
7.5.1 DB并发操作带来的数据不一致问题
(4)死锁的检测与解除
有向等待图中的每个回路意味着死锁的存在; 如果无任何回路,则表示无死锁产生。
并发控制子系统周期性地(比如每隔0.5分钟) 检测事务的有向等待图,如果发现有向等待图 中存在回路,就表示系统中出现了死锁。
(4)死锁的检测与解除
2)有向等待图法 ①检测死锁 ②解除死锁 选择一个处理死锁代价最小的事务,将其撤消,
①一次加锁法 要求每个事务必须对所有要使用的数据项一次性
地全部加锁,否则就不能继续执行。 缺点:扩大了锁的范围,降低了系统的并发度。
(3)死锁的预防(OS)
②顺序加锁法 预先对数据项规定一个加锁顺序,所有事务都按
这个顺序进行加锁。 缺点:很难按规定的顺序进行加锁。
(4)死锁的检测与解除
1)超时法 如果一个事务的等待时间超过了规定的时限,就
7.5.5 并发调度的可串行性
通常把按某一执行次序安排的事务执行的步骤称 为调度(Schedule)。
多个事务的并发执行是正确的,当且仅当其结果 与按某一顺序串行地执行它们时的结果相同。 称这种调度称为可串行化(Serializable)调度。
可串行性(Serializability)是并发事务正确性的 判别准则。按照这个准则的规定,一个给定的 并发调度,当且仅当它可串行化时,才认为是 正确的调度。
(2)二级锁协议
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第八章并发控制习题解答和解析1. 1.在数据库中为什么要并发控制?答:数据库是共享资源,通常有许多个事务同时在运行。

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

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

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

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

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

(2)不可重复读(Non -Repeatable Read)不可重复读是指事务T1读取数据后,事务T2执行更新操作,使T1无法再现前一次读取结果。

不可重复读包括三种情况:详见《概论》8.1(P266)。

(3)读"脏"数据(Dirty Read)读"脏"数据是指事务T1修改某一数据,并将其写回磁盘,事务T2读取同一数据后,T1由于某种原因被撤销,这时T1已修改过的数据恢复原值,T2读到的数据就与数据库中的数据不一致,则T2读到的数据就为"脏"数据,即不正确的数据。

避免不一致性的方法和技术就是并发控制。

最常用的技术是封锁技术。

也可以用其他技术,例如在分布式数据库系统中可以采用时间戳方法来进行并发控制。

3. 3.什么是封锁?答:封锁就是事务T在对某个数据对象例如表、记录等操作之前,先向系统发出请求,对其加锁。

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

封锁是实现并发控制的一个非常重要的技术。

4. 4.基本的封锁类型有几种?试述它们的含义。

答:基本的封锁类型有两种:排它锁(Exclusive Locks, 简称 X 锁 )和共享锁(Share Locks,简称 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做任何修改。

5.如何用封锁机制保证数据的一致性 ?答:DBMS在对数据进行读、写操作之前首先对该数据执行封锁操作,例如下图中事务T1在对A进行修改之前先对A执行XLock(A),即对A加X锁。

这样,当T2请求对A加X锁时就被拒绝,T2只能等待T1释放A上的锁后才能获得对A的X锁,这时它读到的A是T1更新后的值,再按此新的A值进行运算。

这样就不会丢失T1的更新。

DBMS按照一定的封锁协议,对并发操作进行控制,使得多个并发操作有序地执行,就可以避免丢失修改、不可重复读和读"脏"数据等数据不一致性。

6.什么是封锁协议?不同级别的封锁协议的主要区别是什么?答:在运用封锁技术对数据加锁时,要约定一些规则。

例如,在运用X锁和S锁对数据对象加锁时,要约定何时申请X锁或S锁、何时释放封锁等。

这些约定或者规则称为封锁协议(locking Protocol)。

对封锁方式约定不同的规则,就形成了各种不同的封锁协议、不同级别的封锁协议,例如《概论》8.3中介绍的三级封锁协议,三级协议的主要区别在于什么操作需要申请封锁,何时申请封锁以及何时释放锁(即持锁时间的长短)。

一级封锁协议:事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。

二级封锁协议:一级封锁协议加上事务T在读取数据R之前必须先对其加S锁,读完后即可释放S锁。

三级封锁协议:一级封锁协议加上事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放。

7.不同封锁协议与系统一致性级别的关系是什么?答:不同的封锁协议对应不同的一致性级别。

一级封锁协议可防止丢失修改,并保证事务T是可恢复的。

在一级封锁协议中,对读数据是不加S锁的,所以它不能保证可重复读和不读"脏"数据。

二级封锁协议除防止了丢失修改,还可进一步防止读"脏"数据。

在二级封锁协议中,由于读完数据后立即释放S锁,所以它不能保证可重复读。

在三级封锁协议中,无论是读数据还是写数据都加长锁,即都要到事务结束才释放封锁。

所以三级封锁协议除防止了丢失修改和不读"脏"数据外,还进一步防止了不可重复读。

下面的表格清楚地说明了封锁协议与系统一致性的关系。

8.什么是活锁?什么是死锁?答: TI T2 T3 T4lock R . . .. lock R . .. 等待 lock R .Unlock 等待 . lock R. 等待 . 等待. 等待 . 等待. 等待 Unlock 等待. 等待 . lock R. 等待 . .如果事务T1封锁了数据R,事务T2飞又请求封锁R,于是T2等待。

T3也请求封锁R,当T1释放了R上的封锁之后系统首先批准了T3的请求,T2仍然等待。

然后T4又请求封锁R,当T3释放了R上的封锁之后系统又批准了T4的请求……T2有可能永远等待,这就是活锁的情形。

活锁的含义是该等待事务等待时间太长,似乎被锁住了,实际上可能被激活。

如果事务Tl封锁了数据R1,T2封锁了数据R2,然后T1又请求封锁R2,因T2已封锁了R2,于是T1等待T2释放R2上的锁。

接着T2又申请封锁R1,因T1已封锁了R1,T2也只能等待T1释放Rl上的锁。

这样就出现了T1在等待T2,而T2又在等待Tl的局面,T1和T2两个事务永远不能结束,形成死锁。

T1 T2lock R1 .. lock R2. .lock R2 .等待 .等待 lock R1等待等待9.试述活锁的产生原因和解决方法。

答:活锁产生的原因:当一系列封锁不能按照其先后顺序执行时,就可能导致一些事务无限期等待某个封锁,从而导致活锁。

避免活锁的简单方法是采用先来先服务的策略。

当多个事务请求封锁同一数据对象时,封锁子系统按请求封锁的先后次序对事务排队,数据对象上的锁一旦释放就批准申请队列中第一个事务获得锁。

10.请给出预防死锁的若干方法。

答:在数据库中,产生死锁的原因是两个或多个事务都已封锁了一些数据对象,然后又都请求已被其他事务封锁的数据加锁,从而出现死等待。

防止死锁的发生其实就是要破坏产生死锁的条件。

预防死锁通常有两种方法:(1)一次封锁法,要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行;(2)顺序封锁法,预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实行封锁。

不过,预防死锁的策略不大适合数据库系统的特点,具体原因可参见《概论》8.4。

11.请给出检测死锁发生的一种方法,当发生死锁后如何解除死锁?答:数据库系统一般采用允许死锁发生,DBMS检测到死锁后加以解除的方法。

DBMS中诊断死锁的方法与操作系统类似,一般使用超时法或事务等待图法。

超时法是:如果一个事务的等待时间超过了规定的时限,就认为发生了死锁。

超时法实现简单,但有可能误判死锁,事务因其他原因长时间等待超过时限时,系统会误认为发生了死锁。

若时限设置得太长,又不能及时发现死锁发生。

DBMS并发控制子系统检测到死锁后,就要设法解除。

通常采用的方法是选择一个处理死锁代价最小的事务,将其撤消,释放此事务持有的所有锁,使其他事务得以继续运行下去。

当然,对撤销的事务所执行的数据修改操作必须加以恢复。

12.什么样的并发调度是正确的调度?答:可串行化(Sertalizable)的调度是正确的调度。

可串行化的调度的定义:多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行执行它们时的结果相同,称这种调度策略为可串行化的调度。

13.设T1,T2,T3是如下的3个事务:T1:A:=A+2;T2:A:=A*2;T3:A:=A**2;设A的初值为0。

(1)若这3个事务允许并行执行,则有多少可能的正确结果,请一一列举出来。

答:A的最终结果可能有2、4、8、16。

因为串行执行次序有T1 T2 T3、T1 T3 T2、T2 T1 T3、T2 T3 T1、T3 T1 T2、T3 T2 T1。

对应的执行结果是16、8、4、2、4、2。

(2)请给出一个可串行化的调度,并给出执行结果答:T1 T2 T3slock AY=A=OUnlock AXlock ASlock AA=Y+2 等待写回 A(=2) 等待Unlock A 等待Y=A=2Unlock AXlock ASlock AA=Y*2 等待写回 A(=4) 等待Unlock A 等待Y=A=4Unlock AXlock A写回 A(=16)Unlock A最后结果A为16,是可串行化的调度。

(3)请给出一个非串行化的调度,并给出执行结果。

答:T1 T2 T3Slock AY=A=0Unlock ASlock AY=A=0Xlock A等待 Unlock AA=Y+2写回 A(=2) Slock AUnlock A 等待Y=A=2Unlock AXlock AXlock A等待 A=Y**2等待写回 A(=4)等待 Unlock AA=Y*2写回 A(=0)Unlock A最后结果 A 为 0, 为非串行化的调度。

(4)若这3个事务都遵守两段锁协议,请给出一个不产生死锁的可串行化调度。

答: T1 T2 T3Slock AY=A=OXlock AA=Y+2 Slock A写回 A(=2) 等待Unlock A 等待Y=A=2Xlock A等待 Slock AA=Y*2 等待写回A(=4) 等待Unlock A 等待Y=A=4Xlock AA=Y**2写回 A(=16)Unlock A(5)若这3个事务都遵守两段锁协议,请给出一个产生死锁的调度。

答:T1 T2 T3Slock AY=A=0Slock AY=A=0Xlock A等待Xlock A等待Slock AY=A=0Xlock A等待14.试述两段锁协议的概念。

答:两段锁协议是指所有事务必须分两个阶段对数据项加锁和解锁。

•在对任何数据进行读、写操作之前,首先要申请并获得对该数据的封锁;•在释放一个封锁之后,事务不再申请和获得任何其他封锁。

"两段"的含义是,事务分为两个阶段:第一阶段是获得封锁,也称为扩展阶段,在这阶段,事务可以申请获得任何数据项上的任何类型的锁,但是不能释放任何锁;第二阶段是释放封锁,也称为收缩阶段,在这阶段,事务释放已经获得的锁,但是不能再申请任何锁。

相关文档
最新文档